Re: Bug report: Memory leak with LWP::UserAgent/HTTP::Request under RH Linux 6.1/7

Gisle Aas (gisle@activestate.com)
10 Apr 2001 10:49:26 -0700


Gisle Aas <gisle@ActiveState.com> writes:

> "Curt Powell" <curt.powell@sierraridge.com> writes:
> 
> > I have encountered a memory leak under RedHat Linux (versions 6.1 and 7),
> > Perl 5.005 and 5.6.  It occurs with multiple calls to LWP::UserAgent and
> > HTTP::Request.  Following is a short script that demonstrates the problem.
> > On RH7 it shows memory deltas of 8k every 10 or so iterations after the
> > first iteration.  The amount leaked doesn't seem to be related to the size
> > of the page downloaded.  Is it possible that I am not doing the call
> > sequence correctly?
> 
> Seems good enough to me.  I also see memory leaking here.
> I'll try to investigate.

Did you use HTML-Parser 3.20 for your test?

The memory leak went away for me when I downgraded to HTML-Parser 3.19.

Regards,
Gisle


> > #!/usr/bin/perl
> > #usage: ./memtest <url> e.g. ./memtest http://www.sierraridge.com
> > 
> > sub geturl()
> > {
> > 	use LWP::UserAgent;
> > 	use HTTP::Request;
> > 	my $URL = shift;
> > 	my $UA = LWP::UserAgent->new();
> > 	my $Request = HTTP::Request->new(GET => $URL);
> > 	my $Response = $UA->request($Request);
> > 	print "Error retrieving $URL\n" if ($Response->is_error());
> > 	return $Response->as_string;
> > }
> > 
> > sub memused
> > {
> > 	local *memused_TMP_FILE;
> > 	open(memused_TMP_FILE, "</proc/$$/stat");
> > 	my $a = <memused_TMP_FILE>;
> > 	close memused_TMP_FILE;
> > 	my @b = split(' ', $a);
> > 	return $b[22];
> > }
> > 
> > $url = shift ARGV;
> > $lastused = &memused();
> > for ($i=0; $i<=100; ++$i)
> > {
> > 	$length = length(&geturl($url));
> > 	$used = &memused;
> > 	$delta = $used - $lastused;
> > 	print "$i: response length: $length memory used: $used memory change:
> > $delta\n";
> > 	$lastused = $used;
> > }