Deadlock in AbstractFramedChannel in the JBoss EAP 7.1

Solution Unverified - Updated -

Issue

  • We have problems with JBoss, because on several occasions a week, CPU consumption goes up making Http services unnacessible.

Found one Java-level deadlock:

"default task-28":
  waiting to lock monitor 0x000000000daeca28 (object 0x000000074bea12d0, a io.undertow.protocols.http2.Http2Channel),
  which is held by "default I/O-3"
"default I/O-3":
  waiting to lock monitor 0x000000000b2c50e8 (object 0x000000074bfeeb20, a java.lang.Object),
  which is held by "default task-28"

Java stack information for the threads listed above:

"default task-28":
    at io.undertow.server.protocol.framed.AbstractFramedChannel.notifyClosed(AbstractFramedChannel.java:904)
    - waiting to lock <0x000000074bea12d0> (a io.undertow.protocols.http2.Http2Channel)
    at io.undertow.server.protocol.framed.AbstractFramedStreamSourceChannel.exitRead(AbstractFramedStreamSourceChannel.java:584)
    - locked <0x000000074bfeeb20> (a java.lang.Object)
    at io.undertow.server.protocol.framed.AbstractFramedStreamSourceChannel.read(AbstractFramedStreamSourceChannel.java:531)
    at io.undertow.protocols.http2.Http2StreamSourceChannel.read(Http2StreamSourceChannel.java:141)
    at org.xnio.conduits.StreamSourceChannelWrappingConduit.read(StreamSourceChannelWrappingConduit.java:43)
    at org.xnio.conduits.ConduitStreamSourceChannel.read(ConduitStreamSourceChannel.java:127)
    at io.undertow.channels.DetachableStreamSourceChannel.read(DetachableStreamSourceChannel.java:209)
    at io.undertow.server.HttpServerExchange$ReadDispatchChannel.read(HttpServerExchange.java:2301)
    at io.undertow.servlet.spec.ServletInputStreamImpl.readIntoBufferNonBlocking(ServletInputStreamImpl.java:198)
    at io.undertow.servlet.spec.ServletInputStreamImpl.available(ServletInputStreamImpl.java:231)
    at java.io.FilterInputStream.available(FilterInputStream.java:168)
    at java.io.PushbackInputStream.available(PushbackInputStream.java:277)
    at sun.nio.cs.StreamDecoder.inReady(StreamDecoder.java:363)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:324)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
    - locked <0x000000074c195ba8> (a java.io.InputStreamReader)
        ...
"default I/O-3":
    at io.undertow.server.protocol.framed.AbstractFramedStreamSourceChannel.markStreamBroken(AbstractFramedStreamSourceChannel.java:657)
    - waiting to lock <0x000000074bfeeb20> (a java.lang.Object)
    at io.undertow.protocols.http2.AbstractHttp2StreamSourceChannel.markStreamBroken(AbstractHttp2StreamSourceChannel.java:68)
    at io.undertow.server.protocol.framed.AbstractFramedChannel.markReadsBroken(AbstractFramedChannel.java:823)
    at io.undertow.server.protocol.framed.AbstractFramedChannel.receive(AbstractFramedChannel.java:474)
    - locked <0x000000074bea12d0> (a io.undertow.protocols.http2.Http2Channel)
        ...

Environment

Red Hat JBoss Enterprise Application Platform (EAP) 7.1

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content