Hallo, seit ich von SuSE 7.2 auf SuSE 8.1 umgestiegen bin, habe ich ein merkwürdiges Problem: Ich kann ein Programm, das ich statisch gelinkt habe, nicht mehr ausführen. Ich erhalte kurz nach dem Start immer einen Absturz wegen eines Segmentation Faults. Die Analyse des erzeugten Core Dumps ergibt folgendes Bild: (gdb) bt #0 __pthread_mutex_lock (mutex=0x410) at mutex.c:99 #1 0x089126fd in __libc_free (mem=0x410) at malloc.c:3151 #2 0x08707c21 in XFree () #3 0x083fdf5e in qstring_to_xtp(QString const&) () #4 0x083fe025 in QWidget::setCaption(QString const&) () #5 0x084e4143 in QDockWindow::setCaption(QString const&) () #6 0x0854c613 in QToolBar::setLabel(QString const&) () #7 0x0809ee2d in GenespotterBase (this=0x8f17aac, parent=0x410, name=0x3a0007e
, fl=1040) at .ui/genespotterbase.cpp:198 #8 0x0804b7ad in Genespotter (this=0x3a0007e, parent=0x410, name=0x410 , fl=1040) at genespotter.cpp:100 #9 0x0808bcbd in Application::init() (this=0x8f17aac) at application.cpp:74 #10 0x0808ba73 in Application (this=0x8f17aac) at application.cpp:59 #11 0x0808bde6 in Application::get() () at application.cpp:96 #12 0x080484a2 in main (argc=1, argv=0x3a0007e) at main.cpp:70 #13 0x088f14c7 in __libc_start_main (main=0x8048390 <main>, argc=1, ubp_av=0xbfffee44, init=0x80480b4 <_init>, fini=0x8952760 <_fini>, rtld_fini=0, stack_end=0x410) at ../sysdeps/generic/libc-start.c:129 Current language: auto; currently c Hier einige relevante Daten: - Programmiert ist das Ganze in C++. - Ich verwende den Gcc 3.2. - Die Applikation verwendet die Qt-Library in der Version 3.0.5. - Einige der Third-Party-Bibliotheken (unter anderem die Qt-Bibliothek) wurden unter SuSE 7.2 kompiliert und lediglich in das neue System übernommen. Übersetzt wurden sie allerdings ebenfalls mit dem Gcc 3.2. Die Hinweise auf "Address xyz out of bounds" habe ich natürlich bemerkt. Klar sind sie mir allerdings nicht, denn der aufgerufene Konstruktor Genespotter(parent, name, fl) erwartet zwar drei Parameter, diese werden in der Deklaration des Konstruktors aber alle mit "0" als Default-Wert initialisiert (insbesondere der "const char *"-Parameter "name"). Demzufolge wird der Konstruktor auch ohne Parameter aufgerufen. Darüberhinaus konnte ich folgende Merkwürdigkeiten beobachten: 1. Linke ich das Programm dynamisch, läuft es klaglos. 3. Das Problem betrifft auch SuSE 8.0, denn auf einem unter dieser SuSE-Version laufenden Rechner habe ich genau dasselbe Verhalten. Hat irgendjemand eine Ahnung, wo das Problem liegen könnte? Ich bin mittlerweile ziemlich ratlos. Das Einzige, was mir noch einfällt, ist, alle Bibliotheken, die ich unter SuSE 7.2 als Third-Party-Libraries kompiliert hatte, auf meinem 8.1 noch einmal zu übersetzen. Wenn möglich, würde ich das allerdings gerne vermeiden, denn das erzeugt doch eine Menge Aufwand... Vielen Dank schon mal für Eure Hilfe. Alex. -- Alexander Glintschert, MicroDiscovery GmbH Marienburger Strasse 1, D-10405 Berlin, Germany Tel.: +49-(0)30-44350900, Fax: +49-(0)30-443509010 alexander.glintschert@microdiscovery.de http://www.microdiscovery.de