*** glibc detected *** double free or corruption (!prev): [...]
Jan 'RedBully' Seiffert
redbully at cc.fh-luh.de
Sun May 4 03:35:02 CEST 2008
Jan-Benedict Glaw wrote:
> On Fri, 2008-05-02 08:19:08 +0200, Andre Landwehr <andrel at cybernoia.de> wrote:
>> On Thu, 1 May 2008 19:31:29 +0200
>> Maximilian Wilhelm <max at rfc2324.org> wrote:
>>> Am Thursday, den 1 May hub Stefan U. Hegner folgendes in die Tasten:
>>>> wollte gerade mit mondoarchive (v2.2.0-881; etch-amd54) ein Backup
>>>> ziehen, da bekam ich den o.g. Fehler:
>>>>
>>>> *** glibc detected *** double free or corruption (!prev): 0x00000000005510a0 ***
>>> ~~~~~~~~~~~
>>>> SIGABRT signal received from OS
>>>> Abort - probably failed assertion. I'm sleeping for a few seconds so you can rea
>>> Das kann ein einfacher Programmierfehler sein.
>>> Sprichst Du C?
>
> Ists vermutlich auch...
>
>> Alternativ das (debug-gebaute) Programm mal in valgrind laufen lassen
>> wenn gdb nichts findet. Ein eindeutiges double free wird gdb vielleicht
>> noch auf die Reihe bekommen, aber spätestens wenn irgendwo Speicher
>> überschrieben wird, bekommt er nur noch mit wo es knallt und nicht wo
>> die Ursache dafür war.
>
> Aus dem Bauchgefühl heraus würd' ich sogar eher vermuten, daß es
> Schreiben außerhalb des allokierten Bereiches war :) Double free ist
> IMHO in der Praxis eher selten.
>
> Gerade im Fall von corruption ist gdb hier erstmal nicht direkt
> hilfreich: die libc SIGABRTed das Programm zwar, wenn sie das Problem
> *entdeckt*,
*Vor die Stirn patsch*
Wenns aber naeherungsweise immer die gleiche Adresse ist (randomisation
ausschalten), kann man mit GDB nen Brakpoint drauf setzen (ja, auf
Zugriffe auf eine Adresse), zumindest hab ich das mal gehoert...
> aber das sagt rein garnichts aus: Zu diesem Zeitpunkt sind
> die libc'schen Datenstrukturen ja schon lange überschrieben und den
> schuldigen Programmcode macht man dann auch nicht mehr aus.
>
> Mit valgrind oder anderen malloc-Checkern kommt man da in jedem Fall
> weiter.
>
Stimmt, aber ist so unfruchtbar wenn die Pro-Gamer da vorher nie selbst
mal "aufgeraeumt" haben: Man ersaeuft meist in Fehlermeldungen...
> MfG, JBG
>
>
Gruss
Jan
--
mysql> CREATE TABLE log (noted DATE NOT NULL);
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO log SET noted = '0000-00-00';
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM log WHERE noted IS NULL AND noted IS NOT NULL;
+------------+
| noted |
+------------+
| 0000-00-00 |
+------------+
1 row in set (0.00 sec)
More information about the Linux
mailing list