Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-3684

Potential deadlock in vm transport setListener when sender is blocked pending space

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 5.5.1
    • 5.6.0
    • Transport

    Description

      Noticed an intermittent dead lock in test:

      "ActiveMQ Task-1" daemon prio=5 tid=101953000 nid=0x10abf3000 in Object.wait() [10abf2000]
         java.lang.Thread.State: WAITING (on object monitor)
      	at java.lang.Object.wait(Native Method)
      	- waiting on <7ddcdb9a0> (a java.lang.Object)
      	at java.lang.Object.wait(Object.java:485)
      	at org.apache.activemq.thread.Valve.turnOff(Valve.java:71)
      	- locked <7ddcdb9a0> (a java.lang.Object)
      	at org.apache.activemq.transport.vm.VMTransport.setTransportListener(VMTransport.java:230)
      	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
      	at org.apache.activemq.transport.TransportFilter.setTransportListener(TransportFilter.java:42)
      	at org.apache.activemq.broker.TransportConnection.<init>(TransportConnection.java:140)
      	at org.apache.activemq.broker.TransportConnector.createConnection(TransportConnector.java:302)
      	at org.apache.activemq.broker.TransportConnector$1$1.run(TransportConnector.java:218)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:680)
      "RMI RenewClean-[192.168.1.9:57412]" daemon prio=5 tid=10193d800 nid=0x10a7e7000 in Object.wait() [10a7e6000]
         java.lang.Thread.State: TIMED_WAITING (on object monitor)
      	at java.lang.Object.wait(Native Method)
      	- waiting on <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
      	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
      	- locked <7dd894fe0> (a java.lang.ref.ReferenceQueue$Lock)
      	at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:516)
      	at java.lang.Thread.run(Thread.java:680)
      "main" prio=5 tid=101807000 nid=0x100501000 waiting on condition [1004fe000]
         java.lang.Thread.State: WAITING (parking)
      	at sun.misc.Unsafe.park(Native Method)
      	- parking to wait for  <7ddcdbc98> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
      	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
      	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      	at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:306)
      	at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:100)
      	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
      	at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
      	at org.apache.activemq.broker.StubConnection.send(StubConnection.java:107)
      	at org.apache.activemq.store.kahadb.KahaDBStoreRecoveryBrokerTest.testLargeQueuePersistentMessagesNotLostOnRestart(KahaDBStoreRecoveryBrokerTest.java:118)
      ...

      Attachments

        1. VMTransport.java
          12 kB
          Timothy A. Bish

        Activity

          People

            gtully Gary Tully
            gtully Gary Tully
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: