Subject: | memory leak |
Date: | Sat, 2 Nov 2013 12:41:04 +0000 |
To: | "'bug-SOAP-WSDL [...] rt.cpan.org'" <bug-SOAP-WSDL [...] rt.cpan.org> |
From: | Louie Bounassif <louieb [...] au.logicalis.com> |
Hi,
FYI.
In package SOAP::WSDL::Expat::Base:
sub parse {
eval {
$_[0]->_initialize( XML::Parser::Expat->new( Namespaces => 1 ) )->parse( $_[1] );
$_[0]->{ parser }->release();
};
$_[0]->{ parser }->xpcroak( $@ ) if $@;
delete $_[0]->{ parser };
return $_[0]->{ data };
}
I have found a memory leak in a scenario where there is a connection failure ....in the subroutine "parse" the memory is never released...memory leak rate is very small but does creep up slowly.
By putting croak or die in example below it fixes this...im suspecting the eval statement which includes $_[0]->_initialize( XML::Parser::Expat->new( Namespaces => 1 ) )->parse( $_[1] ); is causing the memory leak due to $_[1] not having the correctly formatted xml dom.
sub parse {
croak("Connection failed") if($_[1] =~ /500 Connect failed/);
eval {
$_[0]->_initialize( XML::Parser::Expat->new( Namespaces => 1 ) )->parse( $_[1] );
$_[0]->{ parser }->release();
};
$_[0]->{ parser }->xpcroak( $@ ) if $@;
delete $_[0]->{ parser };
return $_[0]->{ data };
}
Thanks for the Module.
Regards,
Louie Bounassif
Senior Solutions Architect
Logicalis Australia Pty Ltd
t +61 2 9805 9786
f +61 9805 9686
m +61 40 1772 786
louieb@au.logicalis.com
www.au.logicalis.com<http://www.au.netstarlogicalis.com/>
Level 3, Tower B
112-118 Talavera Road
North Ryde NSW 2113 Australia
[cid:image001.jpg@01CED821.0228C5F0]
Find out more about the Logicalis Virtual Private Data Centre and its unique features
Message body is not shown because it is too large.