[ 
https://issues.apache.org/jira/browse/QPID-3216?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Philip Harvey updated QPID-3216:
--------------------------------

    Description: 
As per the following thread dump you can clearly see the deadlock between 
"_lock" (in AMQSession#DisptcherThread) and "_messageDeliveryLock" (in 
AMQSession.java)
This is another regression and I am working to identify the rev that caused it 
and possibly understand the circumstances surrounding the change.

dispatcher thread already obtained "_lock" in dispatchMessage method.
dispatcher thread waiting to take "_messageDeliveryLock" in the same method.

main thread has already obtained "_messageDeliveryLock" in AMQSession.close 
method.
main thread waiting to take "_lock" in DispatcherThread.rejectPending method.

{noformat}
  Found one Java-level deadlock:
  =============================
  "Dispatcher-Channel-0":
    waiting to lock monitor 0x0000002ac1e6f0b8 (object 0x0000002a9f040448, a 
java.lang.Object),
    which is held by "main"
  "main":
    waiting to lock monitor 0x0000002ac1e6f010 (object 0x0000002a9f03ba40, a 
java.lang.Object),
    which is held by "Dispatcher-Channel-0"

  Java stack information for the threads listed above:
  ===================================================
  "Dispatcher-Channel-0":
     at 
org.apache.qpid.client.AMQSession$Dispatcher.dispatchMessage(AMQSession.java:3315)
     - waiting to lock<0x0000002a9f040448>  (a java.lang.Object)
     - locked<0x0000002a9f03ba40>  (a java.lang.Object)
     at 
org.apache.qpid.client.AMQSession$Dispatcher.access$900(AMQSession.java:3096)
     at org.apache.qpid.client.AMQSession.dispatch(AMQSession.java:3089)
     at 
org.apache.qpid.client.message.UnprocessedMessage.dispatch(UnprocessedMessage.java:55)
     at org.apache.qpid.client.AMQSession$Dispatcher.run(AMQSession.java:3243)
     at java.lang.Thread.run(Thread.java:619)
  "main":
     at 
org.apache.qpid.client.AMQSession$Dispatcher.rejectPending(AMQSession.java:3122)
     - waiting to lock<0x0000002a9f03ba40>  (a java.lang.Object)
     at 
org.apache.qpid.client.AMQSession.confirmConsumerCancelled(AMQSession.java:897)
     at 
org.apache.qpid.client.BasicMessageConsumer_0_10.sendCancel(BasicMessageConsumer_0_10.java:189)
     at 
org.apache.qpid.client.BasicMessageConsumer.close(BasicMessageConsumer.java:573)
     - locked<0x0000002a9ef30aa0>  (a java.lang.Object)
     at org.apache.qpid.client.AMQSession.closeConsumers(AMQSession.java:2464)
     at 
org.apache.qpid.client.AMQSession.closeProducersAndConsumers(AMQSession.java:2514)
     at org.apache.qpid.client.AMQSession.close(AMQSession.java:731)
     - locked<0x0000002a9f040448>  (a java.lang.Object)
     - locked<0x0000002a9ef30aa0>  (a java.lang.Object)
     at org.apache.qpid.client.AMQSession.close(AMQSession.java:708)
     at 
org.apache.qpid.client.AMQConnection.closeAllSessions(AMQConnection.java:1003)
     at org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:897)
     - locked<0x0000002a9ef30aa0>  (a java.lang.Object)
     - locked<0x0000002a9ef30ab0>  (a java.lang.Object)
     at org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:886)
     - locked<0x0000002a9f040448>  (a java.lang.Object)
     - locked<0x0000002a9ef30ab0>  (a java.lang.Object)
     at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:870)
     at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:861)
     at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:856)
     at 
org.apache.qpid.test.utils.QpidBrokerTestCase.tearDown(QpidBrokerTestCase.java:1118)
     at junit.framework.TestCase.runBare(TestCase.java:130)
     at 
org.apache.qpid.test.utils.QpidBrokerTestCase.runBare(QpidBrokerTestCase.java:234)
     at junit.framework.TestResult$1.protect(TestResult.java:106)
     at junit.framework.TestResult.runProtected(TestResult.java:124)
     at junit.framework.TestResult.run(TestResult.java:109)
     at junit.framework.TestCase.run(TestCase.java:118)
     at org.apache.qpid.test.utils.QpidTestCase.run(QpidTestCase.java:120)
     at junit.framework.TestSuite.runTest(TestSuite.java:208)
     at junit.framework.TestSuite.run(TestSuite.java:203)
     at 
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:297)
     at 
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:672)
     at 
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:546)
{noformat}

  was:
As per the following thread dump you can clearly see the deadlock between 
"_lock" (in AMQSession#DisptcherThread) and "_messageDeliveryLock" (in 
AMQSession.java)
This is another regression and I am working to identify the rev that caused it 
and possibly understand the circumstances surrounding the change.

dispatcher thread already obtained "_lock" in dispatchMessage method.
dispatcher thread waiting to take "_messageDeliveryLock" in the same method.

main thread has already obtained "_messageDeliveryLock" in AMQSession.close 
method.
main thread waiting to take "_lock" in DispatcherThread.rejectPending method.

  Found one Java-level deadlock:
  =============================
  "Dispatcher-Channel-0":
    waiting to lock monitor 0x0000002ac1e6f0b8 (object 0x0000002a9f040448, a 
java.lang.Object),
    which is held by "main"
  "main":
    waiting to lock monitor 0x0000002ac1e6f010 (object 0x0000002a9f03ba40, a 
java.lang.Object),
    which is held by "Dispatcher-Channel-0"

  Java stack information for the threads listed above:
  ===================================================
  "Dispatcher-Channel-0":
     at 
org.apache.qpid.client.AMQSession$Dispatcher.dispatchMessage(AMQSession.java:3315)
     - waiting to lock<0x0000002a9f040448>  (a java.lang.Object)
     - locked<0x0000002a9f03ba40>  (a java.lang.Object)
     at 
org.apache.qpid.client.AMQSession$Dispatcher.access$900(AMQSession.java:3096)
     at org.apache.qpid.client.AMQSession.dispatch(AMQSession.java:3089)
     at 
org.apache.qpid.client.message.UnprocessedMessage.dispatch(UnprocessedMessage.java:55)
     at org.apache.qpid.client.AMQSession$Dispatcher.run(AMQSession.java:3243)
     at java.lang.Thread.run(Thread.java:619)
  "main":
     at 
org.apache.qpid.client.AMQSession$Dispatcher.rejectPending(AMQSession.java:3122)
     - waiting to lock<0x0000002a9f03ba40>  (a java.lang.Object)
     at 
org.apache.qpid.client.AMQSession.confirmConsumerCancelled(AMQSession.java:897)
     at 
org.apache.qpid.client.BasicMessageConsumer_0_10.sendCancel(BasicMessageConsumer_0_10.java:189)
     at 
org.apache.qpid.client.BasicMessageConsumer.close(BasicMessageConsumer.java:573)
     - locked<0x0000002a9ef30aa0>  (a java.lang.Object)
     at org.apache.qpid.client.AMQSession.closeConsumers(AMQSession.java:2464)
     at 
org.apache.qpid.client.AMQSession.closeProducersAndConsumers(AMQSession.java:2514)
     at org.apache.qpid.client.AMQSession.close(AMQSession.java:731)
     - locked<0x0000002a9f040448>  (a java.lang.Object)
     - locked<0x0000002a9ef30aa0>  (a java.lang.Object)
     at org.apache.qpid.client.AMQSession.close(AMQSession.java:708)
     at 
org.apache.qpid.client.AMQConnection.closeAllSessions(AMQConnection.java:1003)
     at org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:897)
     - locked<0x0000002a9ef30aa0>  (a java.lang.Object)
     - locked<0x0000002a9ef30ab0>  (a java.lang.Object)
     at org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:886)
     - locked<0x0000002a9f040448>  (a java.lang.Object)
     - locked<0x0000002a9ef30ab0>  (a java.lang.Object)
     at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:870)
     at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:861)
     at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:856)
     at 
org.apache.qpid.test.utils.QpidBrokerTestCase.tearDown(QpidBrokerTestCase.java:1118)
     at junit.framework.TestCase.runBare(TestCase.java:130)
     at 
org.apache.qpid.test.utils.QpidBrokerTestCase.runBare(QpidBrokerTestCase.java:234)
     at junit.framework.TestResult$1.protect(TestResult.java:106)
     at junit.framework.TestResult.runProtected(TestResult.java:124)
     at junit.framework.TestResult.run(TestResult.java:109)
     at junit.framework.TestCase.run(TestCase.java:118)
     at org.apache.qpid.test.utils.QpidTestCase.run(QpidTestCase.java:120)
     at junit.framework.TestSuite.runTest(TestSuite.java:208)
     at junit.framework.TestSuite.run(TestSuite.java:203)
     at 
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:297)
     at 
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:672)
     at 
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:546)


    
> Deadlock between "_lock" (in AMQSession#DisptcherThread) and 
> "_messageDeliveryLock" (in AMQSession.java)
> --------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-3216
>                 URL: https://issues.apache.org/jira/browse/QPID-3216
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>    Affects Versions: 0.10
>            Reporter: Rajith Attapattu
>            Assignee: Rajith Attapattu
>              Labels: deadlock
>             Fix For: Future
>
>
> As per the following thread dump you can clearly see the deadlock between 
> "_lock" (in AMQSession#DisptcherThread) and "_messageDeliveryLock" (in 
> AMQSession.java)
> This is another regression and I am working to identify the rev that caused 
> it and possibly understand the circumstances surrounding the change.
> dispatcher thread already obtained "_lock" in dispatchMessage method.
> dispatcher thread waiting to take "_messageDeliveryLock" in the same method.
> main thread has already obtained "_messageDeliveryLock" in AMQSession.close 
> method.
> main thread waiting to take "_lock" in DispatcherThread.rejectPending method.
> {noformat}
>   Found one Java-level deadlock:
>   =============================
>   "Dispatcher-Channel-0":
>     waiting to lock monitor 0x0000002ac1e6f0b8 (object 0x0000002a9f040448, a 
> java.lang.Object),
>     which is held by "main"
>   "main":
>     waiting to lock monitor 0x0000002ac1e6f010 (object 0x0000002a9f03ba40, a 
> java.lang.Object),
>     which is held by "Dispatcher-Channel-0"
>   Java stack information for the threads listed above:
>   ===================================================
>   "Dispatcher-Channel-0":
>      at 
> org.apache.qpid.client.AMQSession$Dispatcher.dispatchMessage(AMQSession.java:3315)
>      - waiting to lock<0x0000002a9f040448>  (a java.lang.Object)
>      - locked<0x0000002a9f03ba40>  (a java.lang.Object)
>      at 
> org.apache.qpid.client.AMQSession$Dispatcher.access$900(AMQSession.java:3096)
>      at org.apache.qpid.client.AMQSession.dispatch(AMQSession.java:3089)
>      at 
> org.apache.qpid.client.message.UnprocessedMessage.dispatch(UnprocessedMessage.java:55)
>      at org.apache.qpid.client.AMQSession$Dispatcher.run(AMQSession.java:3243)
>      at java.lang.Thread.run(Thread.java:619)
>   "main":
>      at 
> org.apache.qpid.client.AMQSession$Dispatcher.rejectPending(AMQSession.java:3122)
>      - waiting to lock<0x0000002a9f03ba40>  (a java.lang.Object)
>      at 
> org.apache.qpid.client.AMQSession.confirmConsumerCancelled(AMQSession.java:897)
>      at 
> org.apache.qpid.client.BasicMessageConsumer_0_10.sendCancel(BasicMessageConsumer_0_10.java:189)
>      at 
> org.apache.qpid.client.BasicMessageConsumer.close(BasicMessageConsumer.java:573)
>      - locked<0x0000002a9ef30aa0>  (a java.lang.Object)
>      at org.apache.qpid.client.AMQSession.closeConsumers(AMQSession.java:2464)
>      at 
> org.apache.qpid.client.AMQSession.closeProducersAndConsumers(AMQSession.java:2514)
>      at org.apache.qpid.client.AMQSession.close(AMQSession.java:731)
>      - locked<0x0000002a9f040448>  (a java.lang.Object)
>      - locked<0x0000002a9ef30aa0>  (a java.lang.Object)
>      at org.apache.qpid.client.AMQSession.close(AMQSession.java:708)
>      at 
> org.apache.qpid.client.AMQConnection.closeAllSessions(AMQConnection.java:1003)
>      at org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:897)
>      - locked<0x0000002a9ef30aa0>  (a java.lang.Object)
>      - locked<0x0000002a9ef30ab0>  (a java.lang.Object)
>      at org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:886)
>      - locked<0x0000002a9f040448>  (a java.lang.Object)
>      - locked<0x0000002a9ef30ab0>  (a java.lang.Object)
>      at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:870)
>      at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:861)
>      at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:856)
>      at 
> org.apache.qpid.test.utils.QpidBrokerTestCase.tearDown(QpidBrokerTestCase.java:1118)
>      at junit.framework.TestCase.runBare(TestCase.java:130)
>      at 
> org.apache.qpid.test.utils.QpidBrokerTestCase.runBare(QpidBrokerTestCase.java:234)
>      at junit.framework.TestResult$1.protect(TestResult.java:106)
>      at junit.framework.TestResult.runProtected(TestResult.java:124)
>      at junit.framework.TestResult.run(TestResult.java:109)
>      at junit.framework.TestCase.run(TestCase.java:118)
>      at org.apache.qpid.test.utils.QpidTestCase.run(QpidTestCase.java:120)
>      at junit.framework.TestSuite.runTest(TestSuite.java:208)
>      at junit.framework.TestSuite.run(TestSuite.java:203)
>      at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:297)
>      at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:672)
>      at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:546)
> {noformat}

--
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: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to