[jboss-jira] [JBoss JIRA] (AS7-4274) Remoting deadlock after deserialization exception of a large object graph returned from EJB.
jaikiran pai (JIRA)
jira-events at lists.jboss.org
Fri Sep 21 05:43:36 EDT 2012
[ https://issues.jboss.org/browse/AS7-4274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12720561#comment-12720561 ]
jaikiran pai commented on AS7-4274:
-----------------------------------
I've created https://issues.jboss.org/browse/AS7-5592 to track this possible regression.
> Remoting deadlock after deserialization exception of a large object graph returned from EJB.
> --------------------------------------------------------------------------------------------
>
> Key: AS7-4274
> URL: https://issues.jboss.org/browse/AS7-4274
> Project: Application Server 7
> Issue Type: Bug
> Components: EJB, Remoting
> Affects Versions: 7.1.1.Final
> Environment: JBoss AS 7.1.1.Final
> Reporter: Daniel Bevenius
> Assignee: David Lloyd
> Fix For: 7.1.2.Final (EAP)
>
> Attachments: ejb-deadlock-maven.jar, ejb-deadlock.jar, thread-dump.txt
>
>
> The use case is a remote EJB client that calls an EJB which returns a large object graph. Due to a configuration error on our part a class that is part of this object graph is not available in the clients classpath. This causes a ClassNotFoundException to be thrown when deserializing, and after this exception is thrown the client "freezes" but can be interrupted by CTRL+C, but the server will deadlock and will not respond and has to be shutdown by killing the server process.
> Below is part of the thread dump (the complete thread dump will be attached to this jira)
> {noformat}
> "Remoting "beve-7719" read-1" prio=5 tid=00000000028cc800 nid=0xb56ab000 waiting for monitor entry [00000000b56aa000]
> java.lang.Thread.State: BLOCKED (on object monitor)
> at org.xnio.streams.BufferPipeOutputStream.close(BufferPipeOutputStream.java:156)
> - waiting to lock <0000000005697300> (a org.xnio.streams.BufferPipeOutputStream)
> at org.xnio.IoUtils.safeClose(IoUtils.java:137)
> at org.jboss.remoting3.remote.OutboundMessage.closeAsync(OutboundMessage.java:158)
> at org.jboss.remoting3.remote.RemoteConnectionChannel.handleAsyncClose(RemoteConnectionChannel.java:502)
> at org.jboss.remoting3.remote.RemoteReadListener.handleEvent(RemoteReadListener.java:259)
> 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.nio.NioHandle.run(NioHandle.java:90)
> at org.xnio.nio.WorkerThread.run(WorkerThread.java:184)
> Locked ownable synchronizers:
> - None
> "EJB default - 4" prio=5 tid=0000000002a10c00 nid=0xb3971000 in Object.wait() [00000000b3970000]
> java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <00000000056972d0> (a org.jboss.remoting3.remote.OutboundMessage)
> at java.lang.Object.wait(Object.java:485)
> at org.jboss.remoting3.remote.OutboundMessage$1.accept(OutboundMessage.java:91)
> - locked <00000000056972d0> (a org.jboss.remoting3.remote.OutboundMessage)
> at org.xnio.streams.BufferPipeOutputStream.send(BufferPipeOutputStream.java:125)
> at org.xnio.streams.BufferPipeOutputStream.send(BufferPipeOutputStream.java:113)
> at org.xnio.streams.BufferPipeOutputStream.getBuffer(BufferPipeOutputStream.java:77)
> at org.xnio.streams.BufferPipeOutputStream.write(BufferPipeOutputStream.java:86)
> - locked <0000000005697300> (a org.xnio.streams.BufferPipeOutputStream)
> at org.jboss.remoting3.remote.OutboundMessage.write(OutboundMessage.java:168)
> at java.io.DataOutputStream.write(DataOutputStream.java:71)
> - locked <00000000056972b8> (a java.io.DataOutputStream)
> at org.jboss.as.ejb3.remote.protocol.versionone.AbstractMessageHandler$1.write(AbstractMessageHandler.java:188)
> at java.io.OutputStream.write(OutputStream.java:99)
> at org.jboss.marshalling.OutputStreamByteOutput.write(OutputStreamByteOutput.java:56)
> at org.jboss.marshalling.SimpleDataOutput.flush(SimpleDataOutput.java:311)
> at org.jboss.marshalling.SimpleDataOutput.write(SimpleDataOutput.java:82)
> at org.jboss.marshalling.river.BlockMarshaller.flush(BlockMarshaller.java:306)
> at org.jboss.marshalling.river.RiverMarshaller.writeEndBlock(RiverMarshaller.java:961)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1008)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:885)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:825)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1063)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
> at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:885)
> at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:62)
> at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:119)
> at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.writeMethodInvocationResponse(MethodInvocationMessageHandler.java:338)
> at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.access$500(MethodInvocationMessageHandler.java:64)
> at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler$1.run(MethodInvocationMessageHandler.java:226)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 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)
> at org.jboss.threads.JBossThread.run(JBossThread.java:122)
> Locked ownable synchronizers:
> - <0000000008350f48> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
> {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
More information about the jboss-jira
mailing list