Hide Forgot
Created attachment 498309 [details] Deadlock Backtrace Description of problem: Multiple threads are performing various operations on a single QPID receiver at the same time. One thread is acknowledging a previously received message, another thread is getting the next message from the receiver, and the third thread is attempting to close the receiver. Version-Release number of selected component (if applicable): qpid-cpp-client-0.7.946106-28_ptc_hotfix_5_v2.el5 How reproducible: 100% when the above conditions are met Steps to Reproduce: 1. 1st thread acks a message from a given receiver 2. 2nd thread is fetching the next message from the given receiver 3. 3rd thread is attempting to close the receiver Actual results: The three threads become deadlocks. Thread 1 holds SessionImpl's lock and is blocked on IncomingMessage's lock. Thread 2 holds IncomingMessage's lock and is blocked on ReceiverImpl's lock. Thread 3 holds the ReceiverImpl's lock and is blocked on SessionImpl's lock. Expected results: No deadlock and the receiver is closed. Additional info: See attached backtrace
Fix committed as http://svn.apache.org/viewvc?view=revision&revision=1475723 that should break this deadlock. Note that I was unable to reproduce it however.
Created attachment 775458 [details] 3-thread reproducer : threads ack, fetch, and close, with random jitter Please see comment at top of code in this attachment.
I have been unable to repro this bug after more than 21,000 iterations of my reproducer (see attached.) so I am calling it verified.
Post Scriptum ------------------------- I finally stopped my reproducer-attempt at 45,000 iterations, with no joy.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHEA-2014-1296.html