[ 
https://issues.apache.org/activemq/browse/AMQCPP-220?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=49062#action_49062
 ] 

Timothy Bish commented on AMQCPP-220:
-------------------------------------

Unfortunately this patch only works if there is never more than one thread 
waiting on the given mutex, as soon as two threads call wait and then someone 
calls notify the apr_pool_clear is called, the contents of the subpool you 
created are all destroyed, which include each outstanding condition instance so 
all the other waiters have the condition instance removed from under them and 
the program segfaults.  This can be seen if you compile and run the unit tests 
as this case is tested explicitly.  

> Memory leak in activemq-cpp
> ---------------------------
>
>                 Key: AMQCPP-220
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-220
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>          Components: CMS Impl
>    Affects Versions: 2.2.3
>         Environment: Solaris 10 x86
> GCC (g++) 3.4.6 (from www.sunfreeware.com) 
> APR 1.3.3
> APR-util 1.3.4
>            Reporter: Brian Roach
>            Assignee: Timothy Bish
>            Priority: Critical
>         Attachments: amq.patch
>
>
> The API leaks ~ 2MB of memory for every 1 million messages consumed.
> The example consumer in activemq-cpp-2.2.3-src/src/examples/consumers can be 
> used as a test bed, it exhibits the behavior.  
> It's even worse if you are not using the consumer->setMessageListener( ) 
> method and are instead directly using the consumer->receive() method in your 
> own loop.  I dont' have hard numbers but it is somewhere around ten-fold. 
> We have an application which is processing ~ 40 million messages per day, and 
> will keep growing until the box runs out of memory. 

-- 
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