[jboss-dev-forums] [Design of Messaging on JBoss (Messaging/JBoss)] - Re: Another Deadlock

clebert.suconic@jboss.com do-not-reply at jboss.com
Fri Mar 6 18:12:59 EST 2009


This Thread is  holding a Channel.lock:

    [junit] "Thread-2 (group:JBM-async-session-delivery-threads-17258453)" daemon prio=1 tid=0x63ee2568 nid=0xae2 waiting for monitor entry [0x650b8000..0x650b9030]
  |     [junit] 	at org.jboss.messaging.integration.transports.netty.MessagingChannelHandler.exceptionCaught(MessagingChannelHandler.java:100)
  |     [junit] 	- waiting to lock <0x74398000> (a org.jboss.messaging.integration.transports.netty.NettyConnector$MessagingClientChannelHandler)
  |     [junit] 	at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:147)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:577)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:804)
  |     [junit] 	at org.jboss.netty.handler.codec.frame.FrameDecoder.exceptionCaught(FrameDecoder.java:224)
  |     [junit] 	at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:147)
  |     [junit] 	at org.jboss.netty.handler.codec.frame.FrameDecoder.handleUpstream(FrameDecoder.java:162)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:577)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:572)
  |     [junit] 	at org.jboss.netty.channel.Channels.fireExceptionCaught(Channels.java:605)
  |     [junit] 	at org.jboss.netty.channel.socket.nio.NioWorker.cleanUpWriteBuffer(NioWorker.java:558)
  |     [junit] 	- locked <0x74395c80> (a java.lang.Object)
  |     [junit] 	at org.jboss.netty.channel.socket.nio.NioWorker.write(NioWorker.java:322)
  |     [junit] 	at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:121)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendDownstream(DefaultChannelPipeline.java:792)
  |     [junit] 	at org.jboss.netty.channel.SimpleChannelHandler.writeRequested(SimpleChannelHandler.java:309)
  |     [junit] 	at org.jboss.netty.channel.SimpleChannelHandler.handleDownstream(SimpleChannelHandler.java:271)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:600)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendDownstream(DefaultChannelPipeline.java:797)
  |     [junit] 	at org.jboss.netty.channel.SimpleChannelHandler.writeRequested(SimpleChannelHandler.java:309)
  |     [junit] 	at org.jboss.netty.channel.SimpleChannelHandler.handleDownstream(SimpleChannelHandler.java:271)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:600)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:595)
  |     [junit] 	at org.jboss.netty.channel.Channels.write(Channels.java:876)
  |     [junit] 	at org.jboss.netty.channel.Channels.write(Channels.java:824)
  |     [junit] 	at org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:236)
  |     [junit] 	at org.jboss.messaging.integration.transports.netty.NettyConnection.write(NettyConnection.java:128)
  |     [junit] 	at org.jboss.messaging.core.remoting.impl.RemotingConnectionImpl$ChannelImpl.sendBlocking(RemotingConnectionImpl.java:1076)
  |     [junit] 	- locked <0x74390d18> (a java.lang.Object)
  |     [junit] 	at org.jboss.messaging.core.client.impl.ClientConsumerImpl.doCleanUp(ClientConsumerImpl.java:620)
  |     [junit] 	at org.jboss.messaging.core.client.impl.ClientConsumerImpl.close(ClientConsumerImpl.java:263)
  |     [junit] 	at org.jboss.messaging.core.client.impl.ClientSessionImpl.closeChildren(ClientSessionImpl.java:1339)
  |     [junit] 	at org.jboss.messaging.core.client.impl.ClientSessionImpl.close(ClientSessionImpl.java:750)
  |     [junit] 	at org.jboss.messaging.core.server.cluster.impl.BridgeImpl$StopRunnable.run(BridgeImpl.java:322)
  |     [junit] 	- locked <0x74390b48> (a org.jboss.messaging.core.server.cluster.impl.BridgeImpl)
  |     [junit] 	at org.jboss.messaging.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:105)
  |     [junit] 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
  |     [junit] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
  |     [junit] 	at java.lang.Thread.run(Thread.java:595)
  | 


If you look at the code, you will see the lock being held:

org.jboss.messaging.core.remoting.impl.RemotingConnectionImpl$ChannelImpl.sendBlocking(RemotingConnectionImpl.java:1076) (the lock was acquired at lock.lock(), line 1053).


And this thread is trying to the channel lock, while it holds 0x74398000


  |     [junit] "New I/O client worker #4336-1" daemon prio=1 tid=0x0a1dbb18 nid=0x92c waiting on condition [0x6264f000..0x62650130]
  |     [junit] 	at sun.misc.Unsafe.park(Native Method)
  |     [junit] 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
  |     [junit] 	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:716)
  |     [junit] 	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:746)
  |     [junit] 	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1076)
  |     [junit] 	at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:184)
  |     [junit] 	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:256)
  |     [junit] 	at org.jboss.messaging.core.remoting.impl.RemotingConnectionImpl.callListeners(RemotingConnectionImpl.java:547)
  |     [junit] 	at org.jboss.messaging.core.remoting.impl.RemotingConnectionImpl.fail(RemotingConnectionImpl.java:421)
  |     [junit] 	at org.jboss.messaging.core.client.impl.ConnectionManagerImpl.failConnection(ConnectionManagerImpl.java:876)
  |     [junit] 	- locked <0x7461ccb8> (a java.lang.Object)
  |     [junit] 	at org.jboss.messaging.core.client.impl.ConnectionManagerImpl.connectionDestroyed(ConnectionManagerImpl.java:197)
  |     [junit] 	at org.jboss.messaging.integration.transports.netty.MessagingChannelHandler.channelDisconnected(MessagingChannelHandler.java:83)
  |     [junit] 	- locked <0x7461b3a0> (a org.jboss.messaging.integration.transports.netty.NettyConnector$MessagingClientChannelHandler)
  |     [junit] 	at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:137)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:577)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:804)
  |     [junit] 	at org.jboss.netty.handler.codec.frame.FrameDecoder.cleanup(FrameDecoder.java:299)
  |     [junit] 	at org.jboss.netty.handler.codec.frame.FrameDecoder.channelDisconnected(FrameDecoder.java:212)
  |     [junit] 	at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:137)
  |     [junit] 	at org.jboss.netty.handler.codec.frame.FrameDecoder.handleUpstream(FrameDecoder.java:162)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:577)
  |     [junit] 	at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:572)
  |     [junit] 	at org.jboss.netty.channel.Channels.fireChannelDisconnected(Channels.java:494)
  |     [junit] 	at org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:514)
  |     [junit] 	at org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:317)
  |     [junit] 	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:306)
  |     [junit] 	at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:254)
  |     [junit] 	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:171)
  |     [junit] 	at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:72)
  |     [junit] 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
  |     [junit] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
  |     [junit] 	at java.lang.Thread.run(Thread.java:595)
  | 
  | 

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4215901#4215901

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4215901



More information about the jboss-dev-forums mailing list