Fehler in der libc??

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Fehler in der libc??
Hi, hab grad keinen NG-Zugang… Ich versuch grade, meinen SimpleTIDManager zum Laufen zu bringen, aber beim Einfügen des 2. Datensatzes fliegt mir das Programm in der Eingabezeile raus, noch bevor putRecord überhaupt aufgerufen wird. Das sagt der gdb dazu:

(...)
returned TID: (0,2)

erfolgreich.

SimpleTIDManagertester [6]> p record#4

Program received signal SIGSEGV, Segmentation fault.
0x401839ce in malloc () from /lib/libc.so.6
(gdb) bt
#0  0x401839ce in malloc () from /lib/libc.so.6
#1  0x40183074 in malloc () from /lib/libc.so.6
#2  0x4002f3f7 in xmalloc () from /lib/libreadline.so.4
#3  0x4002f870 in add_history () from /lib/libreadline.so.4
#4  0x080503a0 in umdb_testshell::TestClass::getInput() (this=0x806b310) at TestClass.cpp:277
#5  0x0804ee3f in umdb_testshell::TestClass::shell() (this=0x806b310) at TestClass.cpp:105
#6  0x0804cca7 in TIDManagerTester (this=0xbffff4f4, prompt=Cannot access memory at address 0x86e3f04
) at tidmanagertester.cpp:209
#7  0x0804cd98 in main () at simpletidmanagertester.cpp:9

Ich hab eine Debug-Funktion davor laufen, die mir die Belegung aller Index-Einträge der Seite anzeigt. Da wird etwas Speicher drin allokiert, das sollte aber fehlerfrei sein IMHO. Wenn ich die weglasse, geht’s aber. :frowning: Hat jemand schonmal ein ähnliches Problem gehabt? Offensichtlich baut hier ja irgendwer in der libc Mist?


Ich kanns jetzt schwer glauben, dass der Fehler in der libc liegt…


Ja, lustigerweise tritt der Fehler auch gar nicht mehr auf, seit mein deleteRecord jetzt auch funktioniert… (???)


Es koennte gut sein, dass du vorher schon in einen Speicherbereich Mist reinschreibst, den sich malloc eigentlich intern fuer z.B. Freispeicherverwaltung reserviert hat, Dann krachts natuerlich erst spaeter.
Mit der libefence oder valgrind kannst du solche Fehler besser lokalisieren.


Ich habe auch ewig rum gesucht, weil ich an den merkwürdigsten Stellen Segmentation-Faults bekommen habe; z.B.: wenn ich im Testprogramm was eingebe und und dann mehr als drei Zeichen mit Backspace gelöscht habe…
das lag ganz einfach daran, daß ich beim Konstruktor von UniquePageID die Argumente vertauscht habe :wand: