[Segmentation fault] SIGSEGV in ??
-
Ich kriege bei einem Programm immer einen SIGSEGV. Der gdb meint dazu:
(gbd) backtrace #0 0x00000069 in ?? () #1 0x54589fab in Rectangle::~Rectangle() #2 0xdaa40234 QCanvas::~QCanvas() from /usr/lib/libqt-mt.so.3 #3 0xfa4bca43 in main()Solche Nachrichten spuckt der gdb mir auch bei einem anderen Problem aus und diese hat dann ebenfalls die beiden Toplevel Frames wie folgt
#0 0x548390b8 in ?? #1 0x583720be in Bla::~Bla() ... ...Die Daten, die ich zu loeschen versuche liegen auf dem heap und der Dtor ruft auf ihnen delete auf.
Was verursacht einen solchen SIGSEGV?
Ich habe versucht in zu rekonstruieren und habe memory zweimal und daten auf dem stack mit delete geloescht, aber nichts davon ergibt das obige Muster.
Any suggestions?
-
Ich denke mal du hast einen Programmierfehler gemacht.
-
Da dürfte wohl die VMT oder der Pointer darauf zerschossen sein. Das ist meist recht scheußlich zu debuggen, aber Hardwarebreakpoints auf Adressen erweisen sich meistens als sehr nützlich.
-
Da dürfte wohl die VMT oder der Pointer darauf zerschossen sein
Die VMT evtl. aber der Pointer darauf?? Du meinst doch sicher nicht den Pointer selber, oder?
-
Da dürfte wohl die VMT oder der Pointer darauf zerschossen sein
Die VMT evtl. oder der Pointer darauf?? Du meinst doch sicher nicht den Pointer selber, oder?
Du vermutest also, dass auf den Objekten bereits ein Dtor aufgerufen wurde.
Warum funktioniert aber dann meine Rekonstruktion, in der ich eine Heap-Variable doppelt loesche? Zufall?
-
Schon erledigt. Aliasing war schuld. Dadurch habe ich meine Elemente mehrmals geloescht. thx