Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: XML::Twig too many children?

by mirod (Canon)
on Feb 22, 2012 at 08:54 UTC ( [id://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 xmltwig.org 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 leak.weaken.twig.pl done $ perl leak.weaken.twig.pl 28700 done $ perl leak.weaken.twig.pl 48700 done $ perl leak.weaken.twig.pl 148700 done $ perl leak.weaken.twig.pl 1348700 done

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://955478]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (8)
As of 2024-03-28 09:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found