*** glibc detected *** double free or corruption (!prev): [...]
Maximilian Wilhelm
max at rfc2324.org
Thu May 1 19:31:29 CEST 2008
Am Thursday, den 1 May hub Stefan U. Hegner folgendes in die Tasten:
Hi!
> 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
> (Zeile drei kam trotz großem X-term Fenster abgehackt raus)
> Mit ein wenig Googlen habe ich erstmal einen Workaround gefunden in Form
> von:
> export MALLOC_CHECK_=0
> Aber das eigentliche Problem habe ich dadurch weder verstanden noch
> gelöst. - Habe ich evtl. ein RAM Problem und sollte nächste Nacht mal
> memtest laufen lassen?
Das kann ein einfacher Programmierfehler sein.
Sprichst Du C?
Ich hab mal nen kleines - eigentlich sinnloses - Programm gebaut,
bei dem es auch knallt.
---schnipp---
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
* Maximilian Wilhelm <max at rfc2324.org>
* -- Thu 01 May 2008 07:11:24 PM CEST
*/
int
main (int argc, char *argv[])
{
/* Speicherplatz fuer das umgedrehte Wort */
char *rev_word;
int i;
int length;
if (argc < 2) {
fprintf (stderr, "Usage: %s strings\n", argv[0]);
return EXIT_FAILURE;
}
rev_word = calloc (1, strlen (argv[1]) + 1);
if (! rev_word) {
fprintf (stderr, "Failed to allocate memory for rev_word\n");
return EXIT_FAILURE;
}
length = strlen (argv[1]);
for (i = length - 1; i >= 0; i--) {
rev_word[length - i - 1] = argv[1][i];
}
rev_word[length + 1] = '\0';
printf ("%s\n", rev_word);
/* Einfach mal zweimal freigeben, damit's schoen laut knallt!
free (rev_word);
free (rev_word);
return EXIT_SUCCESS;
}
---schnapp---
Bau das Programm mal mit debugging symbolen (sprich, nicht strip'en)
und starte es im gdb
$ gdb /path/to/program
(gdb) run [cmd line options]
Wenns dann geknallt hat
(gdb) backtrace
Optimalerweise solltest Du dann sehen können, wo es geknallt hat.
Mit
(gdb) list
könntest Du dann sehen, was da so für Code drumrum ist.
HTH
Ciao
Max
--
Follow the white penguin.
More information about the Linux
mailing list