You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Ken Giusti (JIRA)" <ji...@apache.org> on 2010/10/28 15:04:21 UTC
[jira] Updated: (QPID-2507) C++ broker can deadlock when processing
a bind.
[ https://issues.apache.org/jira/browse/QPID-2507?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ken Giusti updated QPID-2507:
-----------------------------
Fix Version/s: 0.7
> 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
> Assignee: Ken Giusti
> Fix For: 0.7
>
>
> 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
> deadlock.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org