Bug 410551 - c++ client deadlock
Summary: c++ client deadlock
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp
Version: beta
Hardware: All
OS: Linux
urgent
high
Target Milestone: ---
: ---
Assignee: Gordon Sim
QA Contact: Kim van der Riet
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2007-12-04 16:20 UTC by Alan Conway
Modified: 2012-12-07 17:45 UTC (History)
0 users

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed:
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Alan Conway 2007-12-04 16:20:07 UTC
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.
  
Actual results:
 Deadlock.

Comment 1 Alan Conway 2008-02-05 20:48:43 UTC
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.

Comment 2 Gordon Sim 2008-02-11 13:12:18 UTC
Altered (and disabled) testSendToSelf such that sending and acking does actually
occur concurrently. Bug can be reproduced.

Comment 3 Gordon Sim 2008-05-01 08:05:27 UTC
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.

Comment 4 Mike Bonnet 2008-05-16 15:07:58 UTC
qpidc-0.2.656926-1.el5 and qpidd-0.2.656926-1.el5 have been pushed to the staging repo for testing


Note You need to log in before you can comment on or make changes to this bug.