PrettyOS Fehler-/Testthread



  • So, hab heute mal PrettyOS in Parallels Desktop 6 getestet. Mag ja sein, dass es für graphische OS gedacht ist, aber ich dachte mir, ich könnte es ja mal versuchen. Es trat folgender Fehler auf:

    http://prettyos.fanofblitzbasic.de/mem.png
    Zur Erklärung: Eigentlich müsste statt "Continuing anyway..." dort "OS halted!" stehen, aber ich habe die Endlosschleife danach auskommentiert.
    (Maustreiber geht sogar^^)

    Kann mir jemand erklären, was da genau passiert?

    Das ist bisher das erste Mal, dass das passiert, kann man nicht einfach den Speicher an der Stelle vorher einmal leeren? Ich weiß, das ist nicht wichtig, aber wenn es doch mal woanders passiert?

    TIA
    Cuervo


  • Mod

    Gute Idee im Chat:
    <MrX>Wir brauchen ein Testprogramm
    <MrX>Ein Userprogramm (test.elf), dass verschiedene Dinge austestet.
    <ehenkes>Das ist eine hervorragende Idee
    <ehenkes>Dann sehen wir auch, wo wir noch User-Kernel-Barrieren haben

    (Doku hier, damit sie nicht verloren geht)


  • Mod

    <ehenkes><Pretty00001>1234567 sieben zeichen gehen
    <ehenkes>bei 12345678 (Eingabe) bleibt das User-Programm hängen.
    <ehenkes>Ich baue auf dich, denn für networking benötigen wir das funktionsfähig
    <ehenkes>ich verwende qemu 0.14.1, spielt das eine rolle?
    <MrX>ich denke nein.
    <ehenkes>hardwaretest notwendig?
    <ehenkes>ich teset einfach mal
    <MrX>Ich werde gets mal gezielt testen, wenn ich Zeit habe.
    <ehenkes>re
    <ehenkes>wenn man irc eingibt, wird hello.elf angezeigt, z.T. auch absturz beim laden
    <ehenkes>was Cuervo auch sagte
    <ehenkes>merkwürdiges verhalten bei der floppy
    <ehenkes>aber absturz nur ab und zu
    <ehenkes>zur Zeit komme ich über SYN_SENT nicht raus, der IRC server mag mich nicht mehr ^^
    <ehenkes>MrX: schau bitte auch mal nach dieser merkwürdigen anzeige der falschen datei beim von floppy laden
    <ehenkes>das war früher nicht
    <ehenkes>hab eben browser eingegeben, da lädt er rasend schnell
    <ehenkes>auch keine komischen anzeigen falscher files
    <ehenkes>bei starwars lädt er etwas klänger, aber auch sehr schnell, keine fehlanzeigen

    Stand bei rev. 1022

    Leider haben wir inzwischen einige kleine Schwächen im OS.
    Auch Abstürze, freezes.

    Nach Neuformatieren der Floppy und laden von irc.elf kommt kein hello.elf, dafür aber absturz. 🙄


  • Mod

    event_poll <--- fehler bezüglich task / task->parent (MrX behebt dies demnächst)



  • Habe heute starwars geöffnet,
    plötzlich, während des Vorspanns ist folgendes passiert:

    Über serielle Konsole wurde "invalid ack - drop!!!" ausgegeben (mehrfach) und starwars war stehengeblieben. Habe mit ESCape beendet und folgendes Bild war zu sehen:

    http://prettyos.fanofblitzbasic.de/net1.png


  • Mod

    Eine interessante Möglichkeit ist der stack backtrace bei einem Pagefault:
    http://www.henkessoft.de/OS_Dev/Bilder/PF_backtrace_stack.PNG
    Damit kann man die betroffene Funktion und den vorherigen Verlauf ausreichend genau lokalisieren. 🙂


  • Mod

    Cuervo meldet im chat folgende notwendige Korrekturen/Ergänzungen an:

    1. EVENT_TCP_CLOSED sollte sofort ausgelöst werden, wenn die Verbindung ESTABLISHED verlässt, nicht erst, wenn sie gelöscht wird (<--- erledigt)
    2. Wir brauchen EVENT_TCP_CONNECTION_FAILED (<--- timeout bitte im user-prg)
    3. fopen() soll keine Ausgaben erzeugen (<--- erledigt)
    4. Es ist definitiv ein Fehler im Floppytreiber (error 34 und seek error)
    5. Fehler in PCI ? (häufiger durchlauf der for-schleife in function)



  • Fehler im Floppytreiber auf real PCs:

    Wenn man, ausserhalb des bootloaders, von Diskette lesen will, tauchen folgende Meldungen auf (Beispiel mit fdir, gleiches Verhalten beim Laden von Programmen):

    Bild: http://prettyos.fanofblitzbasic.de/flp2.jpg

    Vergrößerung: http://prettyos.fanofblitzbasic.de/flp1.jpg



  • Fehler des Tages:
    Unsere pow-Implementation gibt falsche Werte für negative Exponenten zurück.



  • Warum der Fehler auftritt, ist zwar nicht geklärt, aber es lässt sich mit diesem Workaround beheben:

    if(exponent < 0.0)
            return 1.0 / (isOdd * pow2x(yMulLog(base,-exponent)));
        else
            return isOdd * pow2x(yMulLog(base,exponent));
    

Anmelden zum Antworten