Ich bastel da gerade an einem kleinen Programm. Beim ersten Anlauf habe ich an einigen Stellen "vergessen" reservierten Speicher wieder freizugeben. Das Programm läuft aber soweit ohne Abstürze.
Aber wenn ich das Programm über valgrind starte, gibt es einen Absturz nach der Auswahl eines Menüpunktes! Valgrind sagt:
... ==21853== by 0x11A984: send_event(int, Fl_Widget*, Fl_Window*) (in /home/manfred/prog/gui/thumbck/thumbscan) ==21853== Address 0x8 is not stack'd, malloc'd or (recently) free'd ==21853== ==21853== ==21853== Process terminating with default action of signal 11 (SIGSEGV) ==21853== Access not within mapped region at address 0x8 ==21853== at 0x11A746: PNG_data::png_text(char*, unsigned long) (PNG_data.cpp:310) ==21853== by 0x11A50C: PNG_data::png_proc_chunk() (PNG_data.cpp:228) ==21853== by 0x11A5D1: PNG_data::scan() (PNG_data.cpp:243) ==21853== by 0x11771F: PngText::get(char const*) (png_text.cpp:98) ==21853== by 0x1162DB: MainWindow::thumb_chk(char const*) (thumbscan.cpp:362) ==21853== by 0x116153: MainWindow::scan_dir(char const*) (thumbscan.cpp:328) ==21853== by 0x115F29: MainWindow::scan() (thumbscan.cpp:283) ==21853== by 0x115E49: MainWindow::Menu_Scan_cb(Fl_Widget*, void*) (thumbscan.cpp:259) ==21853== by 0x122710: Fl_Menu_::picked(Fl_Menu_Item const*) (in /home/manfred/prog/gui/thumbck/thumbscan) ...
An der Absturzstelle werden Daten aus einen Vector gelesen und anschließend auch angezeigt (wenn ohne valgrind). Angeblich gibt es auch einen Core Dump, den ich aber nirgends finden kann.
Etwa 30sec später meldet sich apport und sagt:
Entschuldigung, die Anwendung >>memcheck-amd64-linux<< wurde unerwartet beendet.
Wenn ich mir in dem Fenster die Details anschaue, könnten die tatsächlich aus einem Core Dump stammen und da würde ich auch gerne mal einen Debugger drauf ansetzen. Aber dafür müsste ich den finden.
Und will Canonical tatsächlich alle Daten meiner fehlerhaften Programme haben? Ich hätte Lust die mal ordentlich zuzumüllen, aber ich fürchte so fehlerhaft, dass denen etwas auffällt, sind meine Programme dann doch nicht 👿
Drei Core Dumps pro Abend sind ja noch kein DoS.