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]

Reply via email to