Is there a reason why you have to use 5.10.1? Upgrading isn't an option? On Tue, Dec 13, 2016 at 1:04 PM, Duane Bronson <[email protected]> wrote: > Mongers, > > I've been trying to track down a memory leak in a long running perl script > that uses IO::All to write a bunch of files every few seconds. I traced my > leak back to IO::All which checks to make sure the version is at least 5.8.0 > before calling untie. Pretty innocuous, imho. > > Here's an easy way to reproduce it. In perl 5.10.1, this script causes > perl's memory to grow really big. It appears to be fixed in later versions > of perl because there is no memory leak on my mac (perl 5.18.2). > > perl -E 'for $i (0..100_000_000) { 1 if ($^V) }' > and > perl -E '$foo = version->new(v1.2.3); for $i (0..100_000_000) { 1 if ($foo) }' > and (slower) > perl -E 'use IO::All; for $i (0..100_000_000) { "file contents" > > io("/tmp/filename") }' > > Is there a way of fixing my script so I can still use IO::All and not have a > memory leak? Here is one way, but I suspect there are better methods that > won't break with a future version of IO::All. > > use IO::All; > { > no warnings 'redefine'; > sub IO::All::DESTROY { > my $self = shift; > no warnings; > #unless ( $^V and $^V lt v5.8.0 ) { > untie *$self if tied *$self; > #} > $self->close if $self->is_open; > } > } > > Thanks, > Duane > > > > Duane Bronson > [email protected] <mailto:[email protected]> > http://www.nerdlogic.com/ <http://www.nerdlogic.com/> > 5 Goden St. > Belmont, MA 02478 > 617.515.2909 > > > > > > _______________________________________________ > Boston-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/boston-pm
_______________________________________________ Boston-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/boston-pm

