[ 
https://issues.apache.org/activemq/browse/AMQCPP-91?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_38847
 ] 

Albert Strasheim commented on AMQCPP-91:
----------------------------------------

Here's another possible leak:

==32068== 324 (180 direct, 144 indirect) bytes in 9 blocks are definitely lost 
in loss record 19 of 40
==32068==    at 0x1B90939A: operator new(unsigned) (vg_replace_malloc.c:132)
==32068==    by 0x81998E0: 
activemq::connector::openwire::OpenWireConnector::createSession(cms::Session::AcknowledgeMode)
 (OpenWireConnector.cpp:327)
==32068==    by 0x81425CF: 
activemq::core::ActiveMQConnection::createSession(cms::Session::AcknowledgeMode)
 (ActiveMQConnection.cpp:80)

Looks like this may be caused by OpenWireSessionInfo's destructor not deleting 
the sessionInfo and transaction fields.

> A few more Openwire memory leaks
> --------------------------------
>
>                 Key: AMQCPP-91
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-91
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>          Components: Openwire
>    Affects Versions: 2.0
>            Reporter: Albert Strasheim
>         Assigned To: Nathan Mittler
>            Priority: Minor
>             Fix For: 2.0
>
>
> I've found a few memory leaks in the Openwire code when running the unit 
> tests for our library. I'll report the first few now (the ones I think I've 
> figured out), and I'll add info on further leaks in separate comments.
> First possible leak:
> ==22866== 1728 (864 direct, 864 indirect) bytes in 12 blocks are definitely 
> lost in loss record 25 of 40
> ==22866==    at 0x1B90939A: operator new(unsigned) (vg_replace_malloc.c:132)
> ==22866==    by 0x81943CA: 
> activemq::connector::openwire::OpenWireConnector::createConsumerInfo(cms::Destination
>  const*, activemq::connector::SessionInfo*) (OpenWireConnector.cpp:621)
> ==22866==    by 0x81994FD: 
> activemq::connector::openwire::OpenWireConnector::createConsumer(cms::Destination
>  const*, activemq::connector::SessionInfo*, std::string const&, bool) 
> (OpenWireConnector.cpp:382)
> ==22866==    by 0x8148B89: 
> activemq::core::ActiveMQSession::createConsumer(cms::Destination const*, 
> std::string const&, bool) (ActiveMQSession.cpp:236)
> ==22866==    by 0x8146CAB: 
> activemq::core::ActiveMQSession::createConsumer(cms::Destination const*, 
> std::string const&) (ActiveMQSession.cpp:208)
> OpenWireConnector::createConsumerInfo allocates a commands::ConsumerInfo 
> which is returned to OpenWireConnector::createConsumer which does a few 
> things with it, but doesn't delete it if the member function returns normally.
> Next possible leak:
> ==22866== 1232 (440 direct, 792 indirect) bytes in 11 blocks are definitely 
> lost in loss record 27 of 40
> ==22866==    at 0x1B90939A: operator new(unsigned) (vg_replace_malloc.c:132)
> ==22866==    by 0x81989F7: 
> activemq::connector::openwire::OpenWireConnector::createProducer(cms::Destination
>  const*, activemq::connector::SessionInfo*) (OpenWireConnector.cpp:680)
> ==22866==    by 0x8149324: 
> activemq::core::ActiveMQSession::createProducer(cms::Destination const*) 
> (ActiveMQSession.cpp:309)
> OpenWireConnector::createProducer allocates a OpenWireProducerInfo which 
> isn't deleted if the member function returns normally.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to