[Pdx-pm] Recommendations for memory leak checking?

Kevin Scaldeferri kevin at scaldeferri.com
Tue Jul 3 23:21:26 PDT 2007


On Jul 3, 2007, at 3:03 PM, Eric Wilhelm wrote:

> # from Michael G Schwern
> # on Tuesday 03 July 2007 01:52 pm:
>
>>> HARNESS_PERL_SWITCHES="-MDevel::Cover" make test
>>>
>>> I would like to do the same to check for memory leaks.
>>
>> Test::Memory::Cycle can check individual objects and references for
>> memory leaks.
>>
>> Otherwise there's Devel::Leak which I've never really had luck with.
>

Both of those require modifying your code, which I can't do for this  
application.

> I also see Devel::LeakTrace.

That looks like what I want.  I'm not sure how I missed it when  
searching CPAN myself (I found the previous two suggestions).  I'll  
give it a try on Thurs and see if it seems to work for me.

(Aside: the last time I went down more-or-less this road, a couple  
years ago, I found that none of the leak checking modules really  
seemed to work all that well, or be that useful in practice.  I'm  
hoping this situation has improved.  I guess it's a function of the  
fact that it's significantly harder to leak memory in Perl than in C  
that C has excellent tools like valgrind for detecting and debugging  
memory leaks, while in Perl the situation is pretty grim.)

> Possibly something that just makes noise during global cleanup?  Here
> I'm thinking mainly about lexicals (I believe any globals have to be
> cleaned-up at the end and I guess their leakage doesn't matter anyway,
> right?)
>
>   BEGIN {do {"./t/this.t"}; }
>   END { print STDERR ">>>THIS IS THE END<<<\n";}
>   *UNIVERSAL::DESTROY = sub {
>     print STDERR "$_[0] is leaky\n";
>   };
>

I think that would only detect leaks of objects, right?  I'd like to  
detect leaks of normal variables as well.


-kevin


PS: to those who suggested articles about coding techniques for  
avoiding leaks, I appreciate the pointers, but it's not immediately  
relevant to me.  I'm working on platform / infrastructure stuff at  
the moment -- augmenting our standard makefiles to do things like  
coverage analysis and memory analysis via make targets.



More information about the Pdx-pm-list mailing list