konfuses Problem: Segfaults, Aborts und mehr.
-
Grüß euch,
den ganzen Tag plagt mich schon ein Problem mein Programm stürzt an den verschiedensten Stellen ab (Segfault, Abort), gdb kann keinen Backtrace erzeugen, da es sagt der Stack sei korrupt.
Zudem kommt häufig dieser Fehler:malloc.c:4591: _int_malloc: Zusicherung »(unsigned long)(size) >= (unsigned long)(nb)« nicht erfüllt.Was ist das denn?
oder so:
Program received signal SIGABRT, Aborted.(gdb) bt #0 0xb7fe1424 in __kernel_vsyscall () #1 0xb6c2b6e0 in raise () from /lib/libc.so.6 #2 0xb6c2cf15 in abort () from /lib/libc.so.6 #3 0xb6c67175 in ?? () from /lib/libc.so.6 #4 0x0000000d in ?? () #5 0xb6c6cfc4 in ?? () from /lib/libc.so.6 #6 0x00000002 in ?? () #7 0xbfffe7ca in ?? () #8 0xb6d2712b in ?? () from /lib/libc.so.6 #9 0xbfffcfdf in ?? () #10 0xb6d2712b in ?? () from /lib/libc.so.6 #11 0x30d46320 in ?? () #12 0x63643238 in ?? () #13 0x00303266 in ?? () #14 0xb6d44ff4 in ?? () from /lib/libc.so.6 #15 0x00000058 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?)Ich habs mit -ggdb3 compiliert.
Wenn ich es mit valgrind ausführe tritt der Fehler nicht auf, und valgrind hat auch nichts zu bemängeln. Sowas hab ich echt noch nie erlebt.
Es liegt auch nicht am Rechner, auf meinen beiden Laptops tritt es auch auf, obwohl da sogar eine andere Distribution läuft.
Ich weiß echt nicht mehr was ich tun soll

Evtl hat es was mit qt zu tun, es tritt nur bei der GUI-Version auf.
Wäre echt toll wenn ihr ne Idee habt... Danke
-
*** Waitgin for Code ***
***
*** Waiting for Code ***
***
*** Waiting for Code ***
***Ohne Code lässt sich nix sagen. Nur die Aussage allein "Irgend was mit Stackframe, und Zusicherung (-> assert) fehlgeschlagen" hilft echt nicht weiter.
-
Grüß euch,
klar am Code kann man am Besten diskutieren

Aber in diesem Fall sprachen einige Fakten dagegen, den Code zu posten:
es sind ca. 30000 Zeilen, Ich bekomme Ärger, und es liegt meiner Meinung nach gar nicht am Quellcode.Ich hatte mir von euch eher Tipps erhofft wie ich mir selbst helfen kann (Tool, Vorgehensweise..) als dass Jeamnd sagt, da in der Zeile hast du einen Fehler.
Ich bin jetzt im vcs zurück gegangen bis zur letzten sicher stabil laufenden Version (die habe ich auch verteilt und sie ist seit 2 Monaten produktiv) und damit bekomme ich den gleichen Fehler. (Wenn ich es neu compiliere), das 2 Monate alte Compilat zeigt den Fehler definitv nicht. Es scheint also am Build-System zu liegen. Der Compiler ist noch der Gleiche wie vor 2 Monaten, allerdings habe ich in der Zwischenzeit von klassischen Makefiles auf cmake umgestellt. Ich vermute es hat etwas mit den Flags und der libXML2 zu tun.
Na mal sehen wann ich es rausbekomme. So ein Sch.. hätte echt anderes zu tun...

-
es muss am code liegen. schau dir valgrind mal an nettes toolchen
-
So ein ähnliches Problem hatte ich mal als ich ein paralleles Programm debuggen musste auf dem Rechner aber keinen Parallelen Debugger hatte. Da konnte ich nur mit manuellen Debugmethoden wie Assertions und Log-Ausgaben arbeiten. Da es ebenfalls ein extrem komplexes Programm war, war dies tagelange Handarbeit, aber irgendwann hat man den Fehler dann eingekreist und konnte das Problem lösen.
Was ich hatte war übrigens fast die gleiche Fehlermeldung die, wie du selbst lesen kannst, darauf hindeutet, dass du den Stack zerschießt (ich hatte damals den Heap zerschossen). Valgrind ist nicht wirklich gut zum Debuggen von Stack-Problemen, es ist nicht verwunderlich dass es nichts findet.
Mein Ratschlag: Versuch den Fehler manuell einzukreisen und dann lass die kritischen Stellen dann im Debugger schrittweise laufen.
-
Sehr geehrter Herr Professor, bitte begründen Sie Ihre Aussage, das würde mich interessieren.
Danke für die Postings.
-
wenn valgrind nix findet mal purify ausprobieren. Gibts als testlizenz. Ansonsten nicht gerade billig aber preiswert.