qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ken Giusti (JIRA)" <qpid-...@incubator.apache.org>
Subject [jira] Created: (QPID-2507) C++ broker can deadlock when processing a bind.
Date Wed, 14 Apr 2010 19:22:48 GMT
C++ broker can deadlock when processing a bind.

                 Key: QPID-2507
                 URL: https://issues.apache.org/jira/browse/QPID-2507
             Project: Qpid
          Issue Type: Bug
          Components: C++ Broker
         Environment: c++ broker on linux.
            Reporter: Ken Giusti

Rarely happens, but I was lucky enough to catch this on the debugger.

Broker locks due to lock inversion.   Here's the flow:

thread 1 (broker): 
1) gets bind request for the management topic exchange
2) binds to the management topic exchange  [takes topic->lock]
3) attempts to call management agent allocId() [takes mgmt agent->userLock]

At the same time:

thread 4 (mgmt agent periodic timer)
1) periodic processing [takes mgmt agent->userLock]
2) call topicexchange::route() [takes topic->lock]

thread one holds the topic->lock, tries to take mgmt agent->userLock
thread four holds mgmt agent->userLock, tries to take topic->lock


This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org

View raw message