Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Re: XML::Twig too many children?

by mirod (Canon)
on Feb 22, 2012 at 08:54 UTC ( #955478=note: print w/replies, xml ) Need Help??

in reply to XML::Twig too many children?

Good job everybody, but you did not go far enough ;--) It's not a bug in XML::Parser, I believe it's a bug in Perl: if you use weaken a few thousand times it will segfault.

The code below shows the bug:

#!/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, At this thresholds # 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";

The good news is that the bug is fixed in blead and in recent 5.15.*. I don't know which version exactly, but I know it's fixed in 5.15.7. and in 5.15.8.

So, if possible, you should use perlbrew, install 5.15.8 and get the development version of XML::Twig from since XML::Twig 3.39 produces warnings in 5.15.8. Once you've re-installed all of the modules you use, your script should then work properly. BTW the development version of XML::Twig passes all the tests, so it is safe to use.

Let me know if you have any more problem.

Replies are listed 'Best First'.
Re^2: XML::Twig too many children?
by Anonymous Monk on Jun 24, 2012 at 04:04 UTC

    I see no leak here on windows, perl 5.14.1 mingw/gccversion='4.5.2' ( full perl -V here )

    $ perl done $ perl 28700 done $ perl 48700 done $ perl 148700 done $ perl 1348700 done

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://955478]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (2)
As of 2018-04-27 01:17 GMT
Find Nodes?
    Voting Booth?