> On Wed, Oct 24, 2001 at 11:12:19AM +0200, Gabriel Kihlman wrote:
> > 
> > The comments in thrash.perl mention that it test for memory leaks.
> > And by running it you can see that it does leak memory (perl 5.6.1 and
> > 0.17).
> > 
> > A quick glance at the code show no obvious data storage that could
> > explain it so I am wondering if it is supposed to increase its memory
> > usage?
> 
> [...]
> 
> Confirmed here, but I can't find the cause.
> 
> If there's a filehandle leak, the fileno() on new sockets should
> increase "forever".  I added fileno() assertions, but they haven't
> triggered:
> 
>   die "possible filehandle leak" if fileno($handle) > 63;
> 
> It could be a data leak in POE::Kernel.  POE::Kernel keeps references
> to all its sessions, and they in turn keep references to their HEAPs,
> and those reference "user" data, so dumping $poe_kernel gets just
> about everything visible from user space.
> 
> I added code to dump a snapshot of the Kernel every ten seconds:
> 
>   open( TRACE, ">trace." . time() ) or die $!;
>   use Data::Denter;
>   print TRACE Denter($poe_kernel);
>   close TRACE;
> 
> The trace sizes bobble between 19000 and 23000 bytes, but they don't
> expand much more than that.
> 
> Maybe the leak is in some circular reference that is unlinked from
> $poe_kernel but never disappears.  Is there a way to check for that?
> 
> -- Rocco Caputo / [EMAIL PROTECTED] / poe.perl.org / poe.sourceforge.net
> 

You could always build perl with a beohm GC :)

If you want to get dirty with XS you can can do a visit_all to check all svs.

I think I should make a module that does that....

Arthur

Reply via email to