ich möchte eine von mir entwickelte Software von einem Windows XP auf mein Debian System portieren (Kernel 2.6.26-2.686). Vorher kompiliere ich es mit dem g++ (4-3-2) ohne Probleme. Die Portabilität wird durch Einsatz von Qt 4.5.1 und ACE erreicht (hat in früheren Versionen meiner Software schon funktioniert)
Nach dem Start erhalte ich sofort einen Segmentation Fault.
Kann passieren... Aber:
Wenn ich mit einer leeren main() Funktion (d.h. nichts außer einem return 0, alle includes raus) kompiliere und starte erhalte ich weiterhin einen Segmentation Fault.
Ein Backtrace des gdb sagt mir folgendes:
Code: Alles auswählen
#0 0x0811a3db in std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::overflow ()
#1 0xb6eb7313 in std::basic_streambuf<char, std::char_traits<char> >::sputc () from /usr/lib/libstdc++.so.6
#2 0x0811a48a in std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::overflow ()
...
Code: Alles auswählen
mmap2(NULL, 79678, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f5a000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libmkl_def.dylib", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/i686/libmkl_def.dylib", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libmkl_def.dylib", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/i686/cmov/libmkl_def.dylib", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/i686/libmkl_def.dylib", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/sse2/libmkl_def.dylib", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libmkl_def.dylib", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/i486-linux-gnu/libmkl_def.dylib", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/i486-linux-gnu/libmkl_def.dylib", O_RDONLY) = -1 ENOENT (No such file or directory)
munmap(0xb7f5a000, 79678) = 0
open("/sys/devices/system/cpu", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
fcntl64(3, F_GETFD) = 0x1 (flags FD_CLOEXEC)
getdents64(3, /* 7 entries */, 4096) = 200
getdents64(3, /* 0 entries */, 4096) = 0
close(3) = 0
open("/sys/devices/system/cpu", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
getdents64(3, /* 7 entries */, 4096) = 200
getdents64(3, /* 0 entries */, 4096) = 0
close(3) = 0
futex(0xb6f546fc, FUTEX_WAKE_PRIVATE, 2147483647) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Ich habe die Software jetzt mit einer virtuellen Maschine (virtual box) und mit einem Rechner mit Intel I7 Quad Core, mit einem Desktop Board DX 58 SO, mit 3 GByte RAM und bin in beiden Fällen zum selben Ergebniss gekommen.
Hat jemand soetwas schon einmal erlebt oder hat weitere Ideen zum debuggen? Wäre für jede Idee dankbar...