Chuck Rolke created QPID-4672:
---------------------------------
Summary: C++ Broker deadlock detaching XmlExchange sessions
Key: QPID-4672
URL: https://issues.apache.org/jira/browse/QPID-4672
Project: Qpid
Issue Type: Bug
Components: C++ Broker
Affects Versions: 0.20
Environment: C++ Broker, autotools build, make check or
run_federation_tests
Reporter: Chuck Rolke
Priority: Critical
Self test federation.FederationTests.test_dynamic_topic locks up. Pstack shows
three threads with the same trace:
#0 pthread_rwlock_wrlock ()
#1 qpid::broker::XmlExchange::unbind()
#2 qpid::broker::XmlExchange::fedUnbind()
#3 qpid::broker::XmlExchange::bind()
#4 qpid::broker::Queue::bind()
#5 qpid::broker::Broker::bind()
#6 qpid::broker::SemanticState::unbindSessionBindings()
#7 qpid::broker::SemanticState::closed()
#8 qpid::broker::SessionState::~SessionState()
#9 qpid::broker::SessionState::~SessionState()
#10 qpid::broker::SessionHandler::handleDetach()
#11 qpid::amqp_0_10::SessionHandler::detach()
The lock occurs because there are two simultaneous session detach calls going
on. Each takes out the Rlock and then tries to take out the Wlock. Neither will
get the Wlock until everyone else releases their Rlock. Subsequent detach calls
fall into the same catch as they get the Rlock but not the Wlock.
This condition is present in both the XmlExchange and DirectExchange. I'll have
a patch for review shortly.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]