You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Eduardo Corral <ec...@tid.es> on 2007/10/04 11:30:08 UTC

Re: deadlock in ActiveMQ 4.1.1 broker?

Hi everyone

Regarding this issue, we keep getting the deadlock:

Found one Java-level deadlock:
=============================
"ActiveMQ Transport: tcp:///127.0.0.1:42001":
  waiting to lock monitor 0x01548790 (object 0x8cf573f8, a 
org.apache.activemq.transport.InactivityMonitor$2),
  which is held by "ActiveMQ Scheduler"
"ActiveMQ Scheduler":
  waiting to lock monitor 0x00ddd550 (object 0x8cf4a8c0, a 
org.apache.activemq.broker.jmx.ManagedTransportConnection),
  which is held by "ActiveMQ Transport: tcp:///127.0.0.1:42001"

Java stack information for the threads listed above:
===================================================
"ActiveMQ Transport: tcp:///127.0.0.1:42001":
        at 
org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:139)
        - waiting to lock <0x8cf573f8> (a 
org.apache.activemq.transport.InactivityMonitor$2)
        at 
org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:80)
        at 
org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:93)
        at 
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:47)
        - locked <0x8cf57318> (a java.lang.Object)
        at 
org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1138)
        at 
org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:805)
        at 
org.apache.activemq.broker.TransportConnection.dispatchSync(TransportConnection.java:770)
        at 
org.apache.activemq.broker.region.PrefetchSubscription.dispatch(PrefetchSubscription.java:404)
        at 
org.apache.activemq.broker.region.QueueSubscription.dispatch(QueueSubscription.java:172)
        at 
org.apache.activemq.broker.region.PrefetchSubscription.add(PrefetchSubscription.java:129)
        - locked <0x8d045f50> (a 
org.apache.activemq.broker.region.QueueSubscription)
        at 
org.apache.activemq.broker.region.Queue.addSubscription(Queue.java:191)
        - locked <0x8ccfc120> (a 
org.apache.activemq.broker.region.cursors.VMPendingMessageCursor)
        at 
org.apache.activemq.broker.region.AbstractRegion.addConsumer(AbstractRegion.java:234)
        - locked <0x8d045fa0> (a java.lang.Object)
        at 
org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:337)
        at 
org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:86)
        at 
org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:77)
        at 
org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:86)
        at 
org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:96)
        at 
org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:586)
        - locked <0x8cf4a8c0> (a 
org.apache.activemq.broker.jmx.ManagedTransportConnection)
        at 
org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:313)
        at 
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:294)
        at 
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:185)
        at 
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:65)
        at 
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:133)
        at 
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:127)
        - locked <0x8cf4a9d8> (a 
org.apache.activemq.transport.InactivityMonitor$1)
        at 
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
        at 
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:137)
        at java.lang.Thread.run(Unknown Source)
"ActiveMQ Scheduler":
        at 
org.apache.activemq.broker.jmx.ManagedTransportConnection.stop(ManagedTransportConnection.java)
        - waiting to lock <0x8cf4a8c0> (a 
org.apache.activemq.broker.jmx.ManagedTransportConnection)
        at 
org.apache.activemq.util.ServiceSupport.dispose(ServiceSupport.java:40)
        at 
org.apache.activemq.broker.TransportConnection.serviceTransportException(TransportConnection.java:216)
        at 
org.apache.activemq.broker.TransportConnection$1.onException(TransportConnection.java:192)
        at 
org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:96)
        at 
org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:96)
        at 
org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:147)
        at 
org.apache.activemq.transport.InactivityMonitor.onException(InactivityMonitor.java:159)
        at 
org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:84)
        - locked <0x8cf573f8> (a 
org.apache.activemq.transport.InactivityMonitor$2)
        at 
org.apache.activemq.transport.InactivityMonitor.access$100(InactivityMonitor.java:35)
        at 
org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:57)
        at 
edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:431)
        at 
edu.emory.mathcs.backport.java.util.concurrent.FutureTask.runAndReset(FutureTask.java:198)
        at 
edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:189)
        at 
edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:213)
        at 
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at 
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Unknown Source)

Found 1 deadlock.

But we're not using VM transport...any clue about this?

Thank you and best regards
Eduardo Corral

Rob Davies escribió:
> this is a known issue - its been addressed in version 5.0 by ensuring 
> the vm transport is async by default
>
>
> cheers,
>
> Rob
>
> http://rajdavies.blogspot.com/
>
>
>
> On Sep 14, 2007, at 9:44 AM, Eduardo Corral wrote:
>
>> Hi everyone
>>
>> We're using ActiveMQ 4.1.1 Broker, embedded in our server, and while 
>> trying to stop it, we get a deadlock:
>>
>> Java stack information for the threads listed above:
>> ===================================================
>> "ActiveMQ Transport: tcp:///127.0.0.1:64319":
>>        at 
>> org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:137) 
>>
>>        - waiting to lock <0x9ac103c8> (a 
>> org.apache.activemq.transport.InactivityMonitor$2)
>>        at 
>> org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:80) 
>>
>>        at 
>> org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:93) 
>>
>>        at 
>> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:47) 
>>
>>        - locked <0x9ac0fdf8> (a java.lang.Object)
>>        at 
>> org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1138) 
>>
>>        at 
>> org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:805) 
>>
>>        at 
>> org.apache.activemq.broker.TransportConnection.dispatchSync(TransportConnection.java:770) 
>>
>>        at 
>> org.apache.activemq.broker.region.PrefetchSubscription.dispatch(PrefetchSubscription.java:404) 
>>
>>        at 
>> org.apache.activemq.broker.region.QueueSubscription.dispatch(QueueSubscription.java:172) 
>>
>>        at 
>> org.apache.activemq.broker.region.PrefetchSubscription.add(PrefetchSubscription.java:129) 
>>
>>        - locked <0x9ac177a8> (a 
>> org.apache.activemq.broker.region.QueueSubscription)
>>        at 
>> org.apache.activemq.broker.region.Queue.addSubscription(Queue.java:191)
>>        - locked <0x9a94e5a8> (a 
>> org.apache.activemq.broker.region.cursors.VMPendingMessageCursor)
>>        at 
>> org.apache.activemq.broker.region.AbstractRegion.addConsumer(AbstractRegion.java:234) 
>>
>>        - locked <0x9ac1fae8> (a java.lang.Object)
>>        at 
>> org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:337) 
>>
>>        at 
>> org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:86) 
>>
>>        at 
>> org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:77) 
>>
>>        at 
>> org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:86) 
>>
>>        at 
>> org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:96) 
>>
>>        at 
>> org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:586) 
>>
>>        - locked <0x9ac0d128> (a 
>> org.apache.activemq.broker.jmx.ManagedTransportConnection)
>>        at 
>> org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:313)
>>        at 
>> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:294) 
>>
>>        at 
>> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:185) 
>>
>>        at 
>> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:65) 
>>
>>        at 
>> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:133) 
>>
>>        at 
>> org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:127) 
>>
>>        - locked <0x9ac103b8> (a 
>> org.apache.activemq.transport.InactivityMonitor$1)
>>        at 
>> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84) 
>>
>>        at 
>> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:137) 
>>
>>        at java.lang.Thread.run(Thread.java:595)
>> "ActiveMQ Scheduler":
>>        at 
>> org.apache.activemq.broker.jmx.ManagedTransportConnection.stop(ManagedTransportConnection.java:64) 
>>
>>        - waiting to lock <0x9ac0d128> (a 
>> org.apache.activemq.broker.jmx.ManagedTransportConnection)
>>        at 
>> org.apache.activemq.util.ServiceSupport.dispose(ServiceSupport.java:40)
>>        at 
>> org.apache.activemq.broker.TransportConnection.serviceTransportException(TransportConnection.java:216) 
>>
>>        at 
>> org.apache.activemq.broker.TransportConnection$1.onException(TransportConnection.java:192) 
>>
>>        at 
>> org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:96) 
>>
>>        at 
>> org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:96) 
>>
>>        at 
>> org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:147) 
>>
>>        at 
>> org.apache.activemq.transport.InactivityMonitor.onException(InactivityMonitor.java:159) 
>>
>>        at 
>> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:84) 
>>
>>        - locked <0x9ac103c8> (a 
>> org.apache.activemq.transport.InactivityMonitor$2)
>>        at 
>> org.apache.activemq.transport.InactivityMonitor.access$100(InactivityMonitor.java:35) 
>>
>>        at 
>> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:57) 
>>
>>        at 
>> edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:431) 
>>
>>        at 
>> edu.emory.mathcs.backport.java.util.concurrent.FutureTask.runAndReset(FutureTask.java:198) 
>>
>>        at 
>> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java 
>>
>> :189)
>>        at 
>> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:213) 
>>
>>        at 
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) 
>>
>>        at 
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) 
>>
>>        at java.lang.Thread.run(Thread.java:595)
>>
>> Found 1 deadlock.
>>
>> Is this a known issue? I couldn't find the same kind of deadlock on 
>> the issue tracker.
>>
>> Thank you and best regards
>> Eduardo
>>
>>
>
>