Bug#476579: libmoose-perl: perl core dumps with Moose and threads

Niko Tyni ntyni at debian.org
Thu Apr 17 20:24:57 UTC 2008


clone 476579 -1
retitle 476579 libmoose-perl: uses an experimental perl regexp feature, breaks with threads
retitle -1 perl: crash with ??{ code } regexps and threads
reassign -1 perl 5.8.8-12
severity -1 normal
thanks

On Thu, Apr 17, 2008 at 08:02:43PM +0200, Piotr Roszatycki wrote:
> Package: libmoose-perl
> Version: 0.40-1
> Severity: important
> 
> Moose can't be used with threads:

> (sid)root at dandelion:/home/dexter# perl -ale 'use threads; package P;
> use Moose; has "a" => isa=>"Str | Num"; package main; my $thr =
> threads->create(sub {  }); $thr->join(); '
> *** glibc detected *** perl: double free or corruption (!prev): 0x086c5480 ***

Moose::Util::TypeConstraints uses the (??{ code }) regexp feature,
which has this disclaimer in the 'perlre' document:

 WARNING: This extended regular expression feature is considered highly
 experimental, and may be changed or deleted without notice.  A simplified
 version of the syntax may be introduced for commonly used idioms.

I can reproduce the crash with just

 #!/usr/bin/perl
 use threads;
 use re 'eval';
 my $a = qr{(??{a})};
 print "match\n" if "bc" =~ /(??{b})/;
 my $thr = threads->create(sub {  });
 $thr->join();
 __END__

I'm cloning a separate perl bug about this (with a lower severity because
of the disclaimer). It looks like this is fixed in perl 5.10.0, which
will hopefully enter sid soon, but I'll look into that better later.

Cheers,
-- 
Niko Tyni   ntyni at debian.org





More information about the pkg-perl-maintainers mailing list