https://bz.apache.org/bugzilla/show_bug.cgi?id=66574
Bug ID: 66574
Summary: Deadlock in websocket code
Product: Tomcat 9
Version: 9.0.74
Hardware: PC
OS: Linux
Status: NEW
Severity: regression
Priority: P2
Component: WebSocket
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: -----
I believe this is a regression from 9.0.73 - that is, I never encountered that
issue with 9.0.73 (which of course doesn't say that it wasn't there but with
9.0.74 it happens very often so...).
I think it's closely related to (or the same as) these:
https://bz.apache.org/bugzilla/show_bug.cgi?id=63191
https://bz.apache.org/bugzilla/show_bug.cgi?id=66531
The first issue I opened a few years ago. Then, around Tomcat 9.0.71 it stopped
appearing and all was fine. 9.0.72 seemed fine as well as 9.0.73. But now
9.0.74 seems to have introduced it again (or something new). Here are the
relevant stack traces:
-----------------
"thread name" #615 [2030] daemon prio=5 os_prio=0 cpu=667.09ms
elapsed=57804.86s tid=0x00007fc189c87000 nid=2030 waiting on condition
[0x00007fc0bb57c000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
- parking to wait for <0x0000000743e004f8> (a
java.util.concurrent.locks.ReentrantLock$NonfairSync)
at
java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:221)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire([email protected]/AbstractQueuedSynchronizer.java:715)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire([email protected]/AbstractQueuedSynchronizer.java:938)
at
java.util.concurrent.locks.ReentrantLock$Sync.lock([email protected]/ReentrantLock.java:153)
at
java.util.concurrent.locks.ReentrantLock.lock([email protected]/ReentrantLock.java:322)
at org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:654)
at org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:636)
at org.apache.tomcat.websocket.WsSession.close(WsSession.java:624)
at
org.cometd.server.websocket.javax.WebSocketEndPoint$Delegate.close(WebSocketEndPoint.java:119)
at
org.cometd.server.websocket.common.AbstractWebSocketEndPoint.lambda$onMessage$0(AbstractWebSocketEndPoint.java:70)
at
org.cometd.server.websocket.common.AbstractWebSocketEndPoint$$Lambda$1929/0x00000007c10e7078.accept(Unknown
Source)
at org.cometd.bayeux.Promise$2.fail(Promise.java:108)
at
org.cometd.server.websocket.common.AbstractWebSocketEndPoint$$Lambda$1953/0x00000007c111c440.accept(Unknown
Source)
at org.cometd.bayeux.Promise$2.fail(Promise.java:108)
at
org.cometd.server.websocket.common.AbstractWebSocketEndPoint$Entry.fail(AbstractWebSocketEndPoint.java:645)
at
org.cometd.server.websocket.common.AbstractWebSocketEndPoint$Flusher.lambda$onCompleteFailure$0(AbstractWebSocketEndPoint.java:612)
at
org.cometd.server.websocket.common.AbstractWebSocketEndPoint$Flusher$$Lambda$2642/0x00000007c13f9800.accept(Unknown
Source)
at java.util.ArrayList.forEach([email protected]/ArrayList.java:1511)
at
org.cometd.server.websocket.common.AbstractWebSocketEndPoint$Flusher.onCompleteFailure(AbstractWebSocketEndPoint.java:612)
at
org.eclipse.jetty.util.IteratingCallback.failed(IteratingCallback.java:417)
at
org.cometd.server.websocket.javax.WebSocketEndPoint$Delegate.lambda$send$0(WebSocketEndPoint.java:106)
at
org.cometd.server.websocket.javax.WebSocketEndPoint$Delegate$$Lambda$1954/0x00000007c111d438.onResult(Unknown
Source)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase$TextMessageSendHandler.onResult(WsRemoteEndpointImplBase.java:846)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.endMessage(WsRemoteEndpointImplBase.java:442)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase$EndMessageHandler.onResult(WsRemoteEndpointImplBase.java:563)
at
org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer$OnResultRunnable.run(WsRemoteEndpointImplServer.java:395)
at
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run([email protected]/Thread.java:1589)
Locked ownable synchronizers:
- <0x00000006cf2712d8> (a
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker)
-----------------
"other thread name" #713 [2702] daemon prio=5 os_prio=0 cpu=523.94ms
elapsed=53545.41s tid=0x00007fc187e92000 nid=2702 waiting on condition
[0x00007fc0c107c000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
- parking to wait for <0x0000000743e008a8> (a
java.util.concurrent.CompletableFuture$Signaller)
at
java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:221)
at
java.util.concurrent.CompletableFuture$Signaller.block([email protected]/CompletableFuture.java:1864)
at
java.util.concurrent.ForkJoinPool.unmanagedBlock([email protected]/ForkJoinPool.java:3745)
at
java.util.concurrent.ForkJoinPool.managedBlock([email protected]/ForkJoinPool.java:3690)
at
java.util.concurrent.CompletableFuture.waitingGet([email protected]/CompletableFuture.java:1898)
at
java.util.concurrent.CompletableFuture.get([email protected]/CompletableFuture.java:2072)
at
org.cometd.server.websocket.javax.WebSocketEndPoint.onMessage(WebSocketEndPoint.java:60)
at
org.cometd.server.websocket.javax.WebSocketEndPoint.onMessage(WebSocketEndPoint.java:35)
at
org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:390)
at
org.apache.tomcat.websocket.server.WsFrameServer.sendMessageText(WsFrameServer.java:129)
at
org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:484)
at
org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:284)
at
org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130)
at
org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:84)
at
org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:183)
at
org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:163)
at
org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:152)
at
org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:60)
at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:57)
at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run([email protected]/Thread.java:1589)
Locked ownable synchronizers:
- <0x000000070362a330> (a
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker)
- <0x0000000743e004f8> (a
java.util.concurrent.locks.ReentrantLock$NonfairSync)
-----------------
Not sure how to help more but I'm reverting to 7.0.73 for now. Let me know what
I can do.
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]