Hide Forgot
Description of problem: I have encountered several crashes within AcceptTracker::delivered() while adding a a message to the aggregateState unaccepted message set. It appears that IncomingMessages::retrieve() can call AcceptTracker::delivered() while not holding a lock. Version-Release number of selected component (if applicable): qpid-cpp-client-0.7.946106-32_ptc_hotfix_8.el5 How reproducible: Rare Steps to Reproduce: 1. Retrieve messages in thread 1 2. Accept previously retrieved messages in thread 2 Actual results: Client application crashes when AcceptTracker's aggregateState is corrupted. Expected results: Client application does not crash. Additional info:
Created attachment 529877 [details] Backtrace in crash thread
I was unable to reproduce a crash despite trying a fair bit. However I have fixed the locking to prevent concurrent modification of the accept tracker structures which are indeed the likely cause of this. Fixed upstream by http://svn.apache.org/viewvc?view=rev&rev=1195385
I tested this on RHEL5.8 and RHEL6.2 (i386 and x86_64). The reproducer was running for a few days without a single crash on these platforms. Packages used for testing: RHEL6.2 qpid-cpp-client-0.14-14.el6_2 qpid-cpp-client-devel-0.14-14.el6_2 qpid-cpp-client-devel-docs-0.14-14.el6_2 qpid-cpp-server-0.14-14.el6_2 qpid-cpp-server-cluster-0.14-14.el6_2 qpid-cpp-server-devel-0.14-14.el6_2 qpid-cpp-server-store-0.14-14.el6_2 qpid-cpp-server-xml-0.14-14.el6_2 qpid-java-client-0.14-3.el6 qpid-java-common-0.14-3.el6 qpid-java-example-0.14-3.el6 qpid-qmf-0.14-7.el6_2 qpid-tools-0.14-2.el6_2 RHEL5.8 qpid-cpp-client-0.14-14.el5 qpid-cpp-client-devel-0.14-14.el5 qpid-cpp-client-devel-docs-0.14-14.el5 qpid-cpp-client-ssl-0.14-14.el5 qpid-cpp-server-0.14-14.el5 qpid-cpp-server-cluster-0.14-14.el5 qpid-cpp-server-devel-0.14-14.el5 qpid-cpp-server-ssl-0.14-14.el5 qpid-cpp-server-store-0.14-14.el5 qpid-cpp-server-xml-0.14-14.el5 qpid-dotnet-0.10-2.el5 qpid-java-client-0.14-3.el5 qpid-java-common-0.14-3.el5 qpid-java-example-0.14-3.el5 qpid-qmf-0.14-9.el5 qpid-tools-0.14-2.el5 -> VERIFIED