Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
Mysteriöser Segfault
Naja, es ist eigentlich in C geschrieben, aber das kann man im Auswahlmenü nicht
auswählen. Ok, zum Problem:
Ich arbeite gerade an einem kleinen Programm. Aber immer wenn ich es starte Stürzt es mit einem Speicherzugriffsfehler ab. Zur Erklärung: Das Programm liegt mit fgets eine Konfigurationsdatei Zeilenweise ein. Dann wird mit strstr überprüft um was für eine Einstellung es sich handelt (ok, ist zwar nicht sehr effizient, aber da die Datei sehr klein ist und auch kaum Optionen kennt hab ich das der Einfachheit halber so gemacht).
Dann scannt die Funktion ScanForParamPos die eingelesene Zeile nach dem ersten Zeichen nach ein oder mehreren Leerzeichen oder Tabs und findet so den Parameter. Außerdem stellt sie sicher, daß kein newline oder carriage return Zeichen am Parameter hängt indem der einfach nur 0x00 ersetzt wird.
Damit ich jetzt die Quelle des Segfaults genauer bestimmen kann habe ich mich durch das Einfügen von printf Anweisungen näher an die Stelle herangetastet. Das sind die Letzten Worte des Programms:
Zitat:
[14:49] Module loaded: seen
[14:49] Module loaded: blowfish
[14:49] Module loaded: uptime
Using Port 12345
Activating Private-Mode...
Using channel: #abcdef
Debug......
AppendItem-Funktion
[14:49] * Last context: tclhash.c/238 []
[14:49] * Please REPORT this BUG!
[14:49] * Check doc/BUG-REPORT on how to do so.
[14:49] * Wrote DEBUG
[14:49] * SEGMENT VIOLATION -- CRASHING!
Speicherzugriffsfehler
Daher weiß ich daß das Programm in der Funktion AppendItem crasht. Das Problem. Der betreffende Code Ausschnitt sieht wie folgt aus.
Es ist also nur eine simple Zuweisung. Durch nie der Crash eigentlich nicht
verursacht werden kann, es sei denn actualPosition wird dereferenziert. Da man
aber erkennen kann, daß ich das nicht mache, habe ich keine Ahnung, was Da
schiefläuft. Denn "Debug 1" wird, wie oben sichtbar, nicht ausgegeben. Die
Definition von "Subscriptions" sieht übrigens folgendermaßen aus.
Dabei seit: 23.07.2003
Beiträge: 468
Herkunft: ausm Dorf
ahh so, na siehste, so kann man sich vertun, hab ja gesagt kenn mich mit C++ nicht besonders gut aus, so konnte ich auch nicht sehen für was es gut war... Sorry
__________________ man was hatte ich ne dämliche signatur oO
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
Themenstarter
Danke erstmal.
Ich hab das Problem gerade gefunden. Auch wenn ich nicht verstehe, warum es nicht funktioniert. Offentsichtlich hat die printf Funktion des Segfault verursacht. Als ich sie auskommentiert habe lief alles einwandfrei. Gut, eigentlich Fehler lag einige Zeilen weiter unten was aber nicht erklärt warum die printf-Funktion abstürzt.