Red Hat Bugzilla – Bug 410551
c++ client deadlock
Last modified: 2012-12-07 12:45:17 EST
Description of problem:
If Session_0_10::run() is running and sends an ack concurrently with a user
thread sending an AMQP command, the threads can deadlock.
How reproducible: easy
Steps to Reproduce:
Write a test using default ack policy
Run the dispatcher via session.start()
Subscribe a listener to some queue.
Send messages to the same queue in a loop.
Attempted to reproduce with SubscriptionManager in
src/tests/ClientSessionTest.cpp testSendToSelf, no deadlock. Unless the bug can
be reproduced with another test, this should be closed.
Altered (and disabled) testSendToSelf such that sending and acking does actually
occur concurrently. Bug can be reproduced.
Re-enabled testSendToSelf. This runs successfully with the original 10,000 msg
count both under valgrind and standalone. However under valgrind that number of
messages takes a *very* long time so I have cut the count back to 1000 for now.
This particular deadlock cannot exist anymore as the ExecutionHandler and
SessionCore have been merged.
qpidc-0.2.656926-1.el5 and qpidd-0.2.656926-1.el5 have been pushed to the staging repo for testing