Seite 1 von 1

Segmentation fault

Verfasst: 31. August 2009 01:51
von Campino
hallo zusammen, ich versuche gerade ein altes qt programm zum laufen zu bekommen. aber leider habe ich den quellcode nicht mehr und ich weiss auch nicht mehr in welche qt version das programm programmiert wurde. ich weiss nur das es irgendwas mit qt2 gewesen sein muss. wenn ich mein prgramm mit ./MedApp starte bekomme ich ein Segmentation fault. wenn ich mit dem gdb das ganze debugge bekomme ich folgende meldung:
Program received signal SIGSEGV, Segmentation fault.
0xb7da60ac in QWidget::minimumSize () from libqt.so.2


probiert habe ich das ganze mit folgenden libs:
libqt.so.2.2,libqt.so.2.2.3 ,libqt.so.2.3,libqt.so.2.3.1

ich wäre euch sehr verbunden wenn mir jemand helfen könnte.

grüße
david

Segmentation fault

Verfasst: 31. August 2009 11:17
von sowas
hallo,
ohne Quellcode kann man es nicht herausfinden.
Seit der Qt.2 wurden die Parameterübergabe mehrmals geändert z.B.
könnte sein, dass in qt2 string(int,string) benötigte und qt4 string(string,int) erwartet
oder Überlauf von arrays usw. usw. und wenn das programm trotzdem starten sollte dann kann es Segmentation fault geben.

Segmentation fault

Verfasst: 31. August 2009 11:27
von Campino
Das kann schon sein, aber ich benutze doch eine alte qt2 bibliothek...müsste doch dann beispielsweise das problem der parameter übergabe lösen oder?

Re: Segmentation fault

Verfasst: 31. August 2009 12:59
von pfid
Campino hat geschrieben:Das kann schon sein, aber ich benutze doch eine alte qt2 bibliothek...müsste doch dann beispielsweise das problem der parameter übergabe lösen oder?
Das vielleicht. Aber du benutzt "irgendwas mit qt2" libraries, wenns die falschen sind, läufts nicht ;)

Schau doch mal mit ldd drauf, welche libs er will.

Segmentation fault

Verfasst: 31. August 2009 14:32
von Campino
Ich habe jetzt nochmal qt2 selber kompiliert jetzt bekomme ich den fehler
share/MedApp/MedApp: undefined symbol: __ti7QWidget

Program exited with code 0177.
(gdb) bt
No stack.

ldd says:

linux-gate.so.1 => (0xb7ee9000)
libqt.so.2 (0xb7bb1000)
libstdc++-libc6.2-2.so.3 (0xb7b69000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7b2d000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb79ca000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb79ba000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb78cb000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb77dc000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb77cd000)
/lib/ld-linux.so.2 (0xb7eea000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb77c8000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb77ae000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb77aa000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb77a5000)

scheint als ob er libqt.so.2 nicht kennt...aber es existiert ein softlink von libqt.so.2.0 -> libqt.so.2.0.2 welches in meiner programm ordner liegt. durch ein export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:. habe ich das dem ld path bekannt gegeben

hm...und nu?