A deadlock is possible in
http-/0.0.0.0:8080-1":
at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:93)
- waiting to lock <0x00000006dee6a1a8> (a java.nio.HeapByteBuffer)
- locked <0x00000006dee6a200> (a java.lang.Object)
at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsWriteListener.onWritePossible(WsHttpUpgradeHandler.java:243)
at org.apache.catalina.core.StandardWrapperValve.async(StandardWrapperValve.java:605)
at org.apache.catalina.core.StandardWrapperValve.event(StandardWrapperValve.java:350)
at org.apache.catalina.core.StandardContextValve.event(StandardContextValve.java:171)
at org.apache.catalina.valves.ValveBase.event(ValveBase.java:185)
at org.apache.catalina.core.StandardHostValve.event(StandardHostValve.java:252)
at org.apache.catalina.valves.ValveBase.event(ValveBase.java:185)
at org.apache.catalina.core.StandardEngineValve.event(StandardEngineValve.java:121)
at org.apache.catalina.connector.CoyoteAdapter.event(CoyoteAdapter.java:228)
at org.apache.coyote.http11.Http11NioProcessor.event(Http11NioProcessor.java:232)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.event(Http11NioProtocol.java:818)
at org.apache.tomcat.util.net.NioEndpoint$ChannelProcessor.run(NioEndpoint.java:939)
- locked <0x00000006deeeb9c0> (a java.lang.Object)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.net.NioEndpoint$DefaultThreadFactory$1$1.run(NioEndpoint.java:1249)
at java.lang.Thread.run(Thread.java:745)
"EJB default - 1":
at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:81)
- waiting to lock <0x00000006dee6a200> (a java.lang.Object)
at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(WsRemoteEndpointImplServer.java:76)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:444)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessage(WsRemoteEndpointImplBase.java:334)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase$TextMessageSendHandler.write(WsRemoteEndpointImplBase.java:741)
- locked <0x00000006dee6a1a8> (a java.nio.HeapByteBuffer)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendPartialString(WsRemoteEndpointImplBase.java:239)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:182)
at org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:37)
Verified on EAP 6.4.7.CP.CR2
We don't have reproducer for this deadlock, but customer confirmed that patch fixed their reproducer. The patch is included and no regression was found, marking as verified. More information in bz1299058.
A deadlock is possible in http-/0.0.0.0:8080-1": at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:93) - waiting to lock <0x00000006dee6a1a8> (a java.nio.HeapByteBuffer) - locked <0x00000006dee6a200> (a java.lang.Object) at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsWriteListener.onWritePossible(WsHttpUpgradeHandler.java:243) at org.apache.catalina.core.StandardWrapperValve.async(StandardWrapperValve.java:605) at org.apache.catalina.core.StandardWrapperValve.event(StandardWrapperValve.java:350) at org.apache.catalina.core.StandardContextValve.event(StandardContextValve.java:171) at org.apache.catalina.valves.ValveBase.event(ValveBase.java:185) at org.apache.catalina.core.StandardHostValve.event(StandardHostValve.java:252) at org.apache.catalina.valves.ValveBase.event(ValveBase.java:185) at org.apache.catalina.core.StandardEngineValve.event(StandardEngineValve.java:121) at org.apache.catalina.connector.CoyoteAdapter.event(CoyoteAdapter.java:228) at org.apache.coyote.http11.Http11NioProcessor.event(Http11NioProcessor.java:232) at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.event(Http11NioProtocol.java:818) at org.apache.tomcat.util.net.NioEndpoint$ChannelProcessor.run(NioEndpoint.java:939) - locked <0x00000006deeeb9c0> (a java.lang.Object) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.net.NioEndpoint$DefaultThreadFactory$1$1.run(NioEndpoint.java:1249) at java.lang.Thread.run(Thread.java:745) "EJB default - 1": at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:81) - waiting to lock <0x00000006dee6a200> (a java.lang.Object) at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(WsRemoteEndpointImplServer.java:76) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:444) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessage(WsRemoteEndpointImplBase.java:334) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase$TextMessageSendHandler.write(WsRemoteEndpointImplBase.java:741) - locked <0x00000006dee6a1a8> (a java.nio.HeapByteBuffer) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendPartialString(WsRemoteEndpointImplBase.java:239) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:182) at org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:37)