PrettyOS Malloc Error
-
Hallo. Bei meinem PrettyOS (vom 14.September) hängt sich die Shell bei beliebigen Namen auf (außer bei den Befehlen hi,dir ...).
Ich habe im Code debug-strings eingefügt und herausgefunden, dass der Fehler
bei der Zeile 343 in shell.c liegtchar** argv = malloc(sizeof(char*)*argc);
Ich habe in Bochs und VirtualBox getestet.
-
Hallo,
danke erstmal fuer die Meldung, das klingt, als waere ich schuld, weil ich zuletzt am Userheap rumgedoktert habe.Ich kann den Fehler repdoduzieren, sofern es bei dir auch an einer Adresse ~F000xxxx kracht. Seltsam ist, dass das der Kernel-Daten-Bereich ist und die Fault-Adresse exakt der EIP ist. Das sollte eigentlich nicht passieren, dass sowas angesprungen wird.
Aufhaengen waere ja noch was Anderes, aber dass der EIP auf Kernel-Daten umgebogen wird wundert mich doch.Koenntest du mal bitte ueberpruefen, welche Groesse da allokiert werden soll (ueber Debug-Ausgaben)?
Es waere auch noch nett, wenn du den Userheap-Log ueber#define _USERHEAP_DIAGNOSTICS_
aktivierst und mal den Log von COM1 irgendwo (pastebin o.ae.) hochlaedst.
-
Wie geht das mit dem Log unter Bochs?
-
In der Config:
com1: enabled=0
com1: enabled=1, mode=file, dev="./COM1.log"
-
In PrettyOS:
siehe serial.h/c:
#ifdef _SERIAL_LOG_ void serial_log(uint8_t com, const char* msg, ...)
Beispiel in tcp.c:
serial_log(SER_LOG_TCP,"%u ms ID %u\tseq %u send to OutofOrderinBuffer.\r\n", timer_getMilliseconds(), connection->ID, ntohl(tcp->sequenceNumber) - connection->tcb.RCV.IRS);
-
Seit Version 0.0.4.90 muss in os.h außerdem _SERIAL_LOG_ aktiviert werden.
-
Ich habe die Flags aktiviert und die log Datei wird angelegt, hat aber keinen Inhalt.
-
Wo hast du sie denn definiert? Gehoeren in
os.h
, falls du sie woanders hingesteckt hast. Und dann nochmal kompletten Rebuild drauf, beim inkrementellen erkennt er die Abhaengigkeiten nicht
-
Ich habe nun die rebuild.bat anstatt build.bat benutzt und der Fehler tritt nicht mehr auf :p
-
Glückwunsch!