tag 479698 - help
clone 479698 -1
reassign -1 libperlio-via-dynamic-perl 0.12-1
severity -1 wishlist
retitle -1 workaround for memory corruption with Perl 5.10.0
tag -1 patch
forwarded -1 http://rt.cpan.org/Public/Bug/Display.html?id=36260
submitter -1 !
thanks

On Tue, May 27, 2008 at 10:16:31PM +0300, Niko Tyni wrote:
> On Tue, May 06, 2008 at 09:52:26AM +0200, Bastian Blank wrote:
> > Package: perl
> > Version: 5.10.0-9
> > Severity: important
> > 
> > Several tests of the svk package fails reproducible with several different
> > glibc internal "free" checks like "invalid pointer" or "corrupted 
> > double-linked
> > list". Many of the calls seems to go through swig, so maybe this problem is
> > located there.
> 
> > Maybe the following messages are connected:
> > | Attempt to free unreferenced scalar: SV 0x2083d30, Perl interpreter: 
> > 0x602010 at 
> > /home/bastian/debian/perl/svk/trunk/blib/lib/SVK/Command/Commit.pm line 555.
> 
> FWIW, these messages are triggered by libperlio-via-dynamic-perl
> and show up in its test suite too. I looked into them a bit and just reported
> 
>  http://rt.perl.org/rt3/Public/Bug/Display.html?id=54934
> 
> but I'm quite sure that's not going to solve the real problem.

The memory corruption is very much related. The attached patch to
PerlIO::via::dynamic works around it and makes the whole svk test suite
pass for me. I'll try to come up with a minimal test case for the
segfaults and report it as another Perl bug.

I just sent this upstream as [rt.cpan.org #36260].  Bastian, you may want
to apply the workaround to libperlio-via-dynamic-perl for now.  Cloning,
but feel free to close if you prefer to wait for Perl to get fixed.
-- 
Niko Tyni   [EMAIL PROTECTED]
>From 638dc8228c79519a2c410b5fcd8c149412f2fc0b Mon Sep 17 00:00:00 2001
From: Niko Tyni <[EMAIL PROTECTED]>
Date: Thu, 29 May 2008 09:27:04 +0300
Subject: [PATCH] perl 5.10.0 workaround

---
 dynamic.pm |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/dynamic.pm b/dynamic.pm
index 3f0fdc1..10f517b 100644
--- a/dynamic.pm
+++ b/dynamic.pm
@@ -165,10 +165,8 @@ sub DESTROY {
 
     for my $sym (keys %{$ref.'::'}) {
 	undef ${$ref.'::'}{$sym}
-	    if $sym;
+	    if $sym and $sym !~ /GEN/;
     }
-
-    delete $PerlIO::via::{$leaf};
 }
 
 =head1 AUTHORS
-- 
1.5.5.1

Reply via email to