*** *** glibc detektiert perl: double freie oder Korruption (prev!): 0x0c2b7138 ***

StackOverflow https://stackoverflow.com/questions/882422

  •  22-08-2019
  •  | 
  •  

Frage

Während ein Perl-Programm läuft ich folgende Fehler aufgetreten

*** glibc detected *** perl: double free or corruption (!prev): 0x0c2b7138 ***
/lib/tls/i686/cmov/libc.so.6[0xb7daea85]
/lib/tls/i686/cmov/libc.so.6(cfree+0x90)[0xb7db24f0]
perl(Perl_pregfree+0x3e)[0x80a004e]
perl(perl_destruct+0xcf1)[0x806b711]
/usr/local/lib/perl/5.8.8/auto/threads/threads.so[0xb79d2dfb]
/usr/local/lib/perl/5.8.8/auto/threads/threads.so[0xb79d2f9b]
/usr/local/lib/perl/5.8.8/auto/threads/threads.so[0xb79d5fbb]
/lib/tls/i686/cmov/libpthread.so.0[0xb7e974fb]
/lib/tls/i686/cmov/libc.so.6(clone+0x5e)[0xb7e19e5e]

Mein OS ist Ubuntu 8.04, Perl-Version ist 5.8.8

Meine Skripte enthält Themen ... Ich kann den Code nicht teilen, aber wollte wissen, ob jemand Erfahrung mit dieser Art von Fehler hatte und wie Sie beschlossen hatte / genähert / analysierte sie. Gibt es irgendwelche Werkzeuge / logs, die ich inaddition beziehen könnte auf diese Art von Problemen zu arbeiten.

Vielen Dank für Ihre Unterstützung.

P. S: Ich weiß, dass Themen für jedermann nicht die idealen Freunde sind. Allerdings steuere ich nicht Entscheidung Perl zu verwenden. Ich bin nur den Code beibehalten wird.

War es hilfreich?

Lösung

Ihr Code öffnen und in es setzen irgendwo vor, wo das Problem auftritt:

$DB::single=1;

Dann führen

PERL5OPT='-dt'  perl yourscript.pl 

und drücken Sie

c[enter]

so oft, bis das Problem erneut auftritt. (Keeping zur Kenntnis, ob es sich bei Ihrem Handbuch Breakpoint stoppt oder nicht, bevor ein Fehler).

Dann iterativ den manuellen Haltepunkt bewegen vorwärts / rückwärts, bis Sie es nur , bevor Sie Ihren Abschlusspunkt (Sie den Tod Punkt mit einem Bündel von Druckbefehlen auch finden kann), und dann Arbeit versuchen, von dort möglicherweise, mit Pre-Crash-Selbstbeobachtung.

Dies wird (hoffentlich) helfen Ihnen einen Testfall erzeugen, die das Problem aufweist.

Andere Tipps

dieses Themas auf die perl5 Träger Mailingliste scheint darauf hinzudeuten, dass es sich um ein bekanntes Problem mit 5.8.8 und Gewinde ist. Ich denke, Ihr Problem ist wahrscheinlich auf einen Code Problem, das nicht durch Perl gefangen wird.

Wenn Sie können, würde ich vorschlagen, den Code auf ein minimales Beispiel Strippen nach unten. Sie sollten dann in der Lage sein, zu versuchen, den Code Problem zu beheben.

Die wahrscheinlichste Ursache ist eine inkompatible Version von glibc. Sie benötigen Perl mit der Version von glibc laufen, mit dem es erstellt wurde

Das sieht aus wie ein Fehler intern zu Perl. Die „doppelte freie oder Korruption“ bezieht sich auf Speicher zweimal freigegeben wird oder beschädigt. Perl verwaltet Speicher für Sie, so sollte dies nie passieren, wenn Perl richtig funktioniert.

Gibt es eine neuere Version von Perl Sie? Upgraden

Versuchen 'Threads' und 'Threads :: geteilt' Module von CPAN zu aktualisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top