The bug is in Perl itself, and seems to be fixed in 5.15.5.
The following code, which is the simplest I have found to trigger the problem, causes a segmentation fault for versions up to 5.14.2, but not in 5.15.5 or bleadperl:
#!/usr/bin/perl
use strict;
use warnings;
use Scalar::Util 'weaken';
# the number of iteration that causes a segmentation fault varies
# on my machine, 5.14.2 18700, 5.12.4 20147, blead
# at these values, the bug shows up most of the time but not always
my $ITER= $ARGV[0] || 18700;
my $head= {};
my $tail= $head;
foreach (1..$ITER)
{ my $new_tail= { p => $tail };
weaken( $new_tail->{p});
$tail->{n}= $new_tail;
$tail= $new_tail;
}
print "done\n";