-
Bug
-
Resolution: Unresolved
-
Critical
-
None
-
2.0.26.Final
-
None
-
None
WildFly CI experienced a hung job due to a deadlock involving two threads traversing Undertow code.
I'll attach the full thread dump of all test processes, but this appears to be the key bit (from a server process).
Found one Java-level deadlock: ============================= "default task-1": waiting to lock monitor 0xc6b5f124 (object 0xe2fa9ee8, a io.undertow.protocols.http2.Http2Channel), which is held by "default I/O-5" "default I/O-5": waiting to lock monitor 0xc6b5f190 (object 0xe3048fa8, a java.lang.Object), which is held by "default task-1" Java stack information for the threads listed above: =================================================== "default task-1": at io.undertow.server.protocol.framed.AbstractFramedChannel.markWritesBroken(AbstractFramedChannel.java:884) - waiting to lock <0xe2fa9ee8> (a io.undertow.protocols.http2.Http2Channel) at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.channelForciblyClosed(AbstractFramedStreamSinkChannel.java:562) at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.close(AbstractFramedStreamSinkChannel.java:539) at org.xnio.IoUtils.safeClose(IoUtils.java:152) at io.undertow.server.protocol.framed.AbstractFramedChannel.queueFrame(AbstractFramedChannel.java:709) at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.queueFinalFrame(AbstractFramedStreamSinkChannel.java:257) - locked <0xe3048f28> (a java.lang.Object) at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.shutdownWrites(AbstractFramedStreamSinkChannel.java:240) - locked <0xe3048f28> (a java.lang.Object) at io.undertow.protocols.http2.Http2Channel.sendGoAway(Http2Channel.java:822) at io.undertow.protocols.http2.Http2Channel.sendGoAway(Http2Channel.java:809) at io.undertow.protocols.http2.Http2Channel.removeStreamSink(Http2Channel.java:968) at io.undertow.protocols.http2.Http2StreamSinkChannel.channelForciblyClosed(Http2StreamSinkChannel.java:68) at io.undertow.protocols.http2.Http2DataStreamSinkChannel.channelForciblyClosed(Http2DataStreamSinkChannel.java:322) at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.close(AbstractFramedStreamSinkChannel.java:539) at org.xnio.IoUtils.safeClose(IoUtils.java:152) at io.undertow.server.protocol.framed.AbstractFramedChannel.queueFrame(AbstractFramedChannel.java:709) at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.queueFinalFrame(AbstractFramedStreamSinkChannel.java:257) - locked <0xe3048fa8> (a java.lang.Object) at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.shutdownWrites(AbstractFramedStreamSinkChannel.java:240) - locked <0xe3048fa8> (a java.lang.Object) at org.xnio.conduits.StreamSinkChannelWrappingConduit.terminateWrites(StreamSinkChannelWrappingConduit.java:75) at org.xnio.conduits.ConduitStreamSinkChannel.shutdownWrites(ConduitStreamSinkChannel.java:178) at io.undertow.channels.DetachableStreamSinkChannel.shutdownWrites(DetachableStreamSinkChannel.java:79) at io.undertow.io.UndertowOutputStream.close(UndertowOutputStream.java:347) at io.undertow.io.UndertowOutputStream.updateWritten(UndertowOutputStream.java:266) at io.undertow.io.UndertowOutputStream.write(UndertowOutputStream.java:209) at io.undertow.io.UndertowOutputStream.write(UndertowOutputStream.java:105) at io.undertow.io.BlockingSenderImpl.send(BlockingSenderImpl.java:131) at io.undertow.io.BlockingSenderImpl.send(BlockingSenderImpl.java:166) at io.undertow.server.handlers.error.SimpleErrorPageHandler$1.handleDefaultResponse(SimpleErrorPageHandler.java:68) at io.undertow.server.HttpServerExchange.endExchange(HttpServerExchange.java:1608) at io.undertow.server.Connectors.executeRootHandler(Connectors.java:401) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377) at java.lang.Thread.run(Thread.java:748) "default I/O-5": at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.close(AbstractFramedStreamSinkChannel.java:525) - waiting to lock <0xe3048fa8> (a java.lang.Object) at org.xnio.IoUtils.safeClose(IoUtils.java:152) at io.undertow.protocols.http2.Http2Channel.closeSubChannels(Http2Channel.java:645) at io.undertow.server.protocol.framed.AbstractFramedChannel.close(AbstractFramedChannel.java:824) at org.xnio.IoUtils.safeClose(IoUtils.java:152) at io.undertow.protocols.http2.Http2Channel.lastDataRead(Http2Channel.java:593) at io.undertow.server.protocol.framed.AbstractFramedChannel.receive(AbstractFramedChannel.java:379) - locked <0xe2fa9ee8> (a io.undertow.protocols.http2.Http2Channel) at io.undertow.server.protocol.http2.Http2ReceiveListener.handleEvent(Http2ReceiveListener.java:118) at io.undertow.server.protocol.http2.Http2ReceiveListener.handleEvent(Http2ReceiveListener.java:67) at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92) at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:951) at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:932) at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92) at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66) at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:89) at org.xnio.nio.WorkerThread.run(WorkerThread.java:591) Found 1 deadlock.