Deadlock in XNIO in EAP 6.1
pmm Feb 14, 2014 5:16 AMWe're seeing the following deadlock in EAP 6.1 when using EJB remoting over SSL
Found one Java-level deadlock
"Remoting "acme" write-1":
waiting to lock monitor 0x000000000066e6a8 (object 0x000000077947eee0, a org.xnio.Buffers$4),
which is held by "Remoting "acme" read-1"
"Remoting "e_qpas_load1_batch" read-1":
waiting to lock monitor 0x000000000184cbb8 (object 0x000000077947ef38, a org.xnio.ByteBufferSlicePool$PooledByteBuffer),
which is held by "Remoting "acme" write-1"
Java stack information for the threads listed above
"Remoting "acme" write-1":
at org.xnio.channels.FramedMessageChannel.closeAction(FramedMessageChannel.java:328)
- waiting to lock <0x000000077947eee0> (a org.xnio.Buffers$4)
at org.xnio.channels.TranslatingSuspendableChannel.close(TranslatingSuspendableChannel.java:811)
at org.xnio.IoUtils.safeClose(IoUtils.java:137)
at org.xnio.channels.TranslatingSuspendableChannel$3.handleEvent(TranslatingSuspendableChannel.java:123)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
at org.xnio.channels.TranslatingSuspendableChannel.close(TranslatingSuspendableChannel.java:813)
at org.xnio.ssl.JsseConnectedSslStreamChannel.handleHandshake(JsseConnectedSslStreamChannel.java:412)
- locked <0x000000077947ef38> (a org.xnio.ByteBufferSlicePool$PooledByteBuffer)
at org.xnio.ssl.JsseConnectedSslStreamChannel.doFlush(JsseConnectedSslStreamChannel.java:638)
at org.xnio.ssl.JsseConnectedSslStreamChannel.flushAction(JsseConnectedSslStreamChannel.java:613)
- locked <0x000000077947efb8> (a org.xnio.ByteBufferSlicePool$PooledByteBuffer)
at org.xnio.channels.TranslatingSuspendableChannel.flush(TranslatingSuspendableChannel.java:604)
at org.xnio.channels.FramedMessageChannel.flushAction(FramedMessageChannel.java:275)
- locked <0x000000077947ef50> (a org.xnio.Buffers$4)
at org.xnio.channels.TranslatingSuspendableChannel.flush(TranslatingSuspendableChannel.java:604)
at org.jboss.remoting3.remote.RemoteConnection$RemoteWriteListener.handleEvent(RemoteConnection.java:221)
- locked <0x000000077947f000> (a java.util.ArrayDeque)
at org.jboss.remoting3.remote.RemoteConnection$RemoteWriteListener.handleEvent(RemoteConnection.java:196)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
at org.xnio.channels.TranslatingSuspendableChannel.handleWritable(TranslatingSuspendableChannel.java:243)
at org.xnio.channels.TranslatingSuspendableChannel$2.handleEvent(TranslatingSuspendableChannel.java:113)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
at org.xnio.channels.TranslatingSuspendableChannel.handleWritable(TranslatingSuspendableChannel.java:243)
at org.xnio.channels.TranslatingSuspendableChannel$2.handleEvent(TranslatingSuspendableChannel.java:113)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
at org.xnio.nio.NioHandle.run(NioHandle.java:90)
at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:208)
at org.xnio.nio.WorkerThread.run(WorkerThread.java:121)
"Remoting "acme" read-1":
at org.xnio.ssl.JsseConnectedSslStreamChannel.read(JsseConnectedSslStreamChannel.java:473)
- waiting to lock <0x000000077947ef38> (a org.xnio.ByteBufferSlicePool$PooledByteBuffer)
at org.xnio.ssl.JsseConnectedSslStreamChannel.read(JsseConnectedSslStreamChannel.java:449)
at org.xnio.channels.FramedMessageChannel.receive(FramedMessageChannel.java:87)
- locked <0x000000077947eee0> (a org.xnio.Buffers$4)
at org.jboss.remoting3.remote.RemoteReadListener.handleEvent(RemoteReadListener.java:72)
at org.jboss.remoting3.remote.RemoteReadListener.handleEvent(RemoteReadListener.java:45)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
at org.xnio.channels.TranslatingSuspendableChannel.handleReadable(TranslatingSuspendableChannel.java:189)
at org.xnio.channels.TranslatingSuspendableChannel$1.handleEvent(TranslatingSuspendableChannel.java:103)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
at org.xnio.channels.TranslatingSuspendableChannel.handleReadable(TranslatingSuspendableChannel.java:189)
at org.xnio.ssl.JsseConnectedSslStreamChannel.handleReadable(JsseConnectedSslStreamChannel.java:180)
at org.xnio.channels.TranslatingSuspendableChannel$1.handleEvent(TranslatingSuspendableChannel.java:103)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
at org.xnio.nio.NioHandle.run(NioHandle.java:90)
at org.xnio.nio.WorkerThread.run(WorkerThread.java:187)