Uploaded image for project: 'Undertow'
  1. Undertow
  2. UNDERTOW-1638

Http2 AbstractFramedStreamSinkChannel Buffer has already been freed

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 2.0.30.Final
    • 2.0.29.Final
    • None
    • None

      While attempting to reproduce a client connection leak I encountered 'UT000091: Buffer has already been freed'.

      Note this occurred while running 32 concurrent clients after just over 200,000 total requests.

      Handler implementation:

                  new BlockingHandler(exchange -> {
                          Thread.sleep(1);
                          exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json");
                          exchange.getOutputStream().write(responseData); // 200kb
                      })
      
      13:24:35.528 [XNIO-1 task-38] ERROR io.undertow.request - UT005071: Undertow request failed HttpServerExchange{ POST /simple/ping}
      java.lang.IllegalStateException: UT000091: Buffer has already been freed
      	at io.undertow.server.DefaultByteBufferPool$DefaultPooledBuffer.getBuffer(DefaultByteBufferPool.java:260)
      	at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.sendWriteBuffer(AbstractFramedStreamSinkChannel.java:497)
      	at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.handleBufferFull(AbstractFramedStreamSinkChannel.java:485)
      	at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.write(AbstractFramedStreamSinkChannel.java:396)
      	at org.xnio.conduits.StreamSinkChannelWrappingConduit.write(StreamSinkChannelWrappingConduit.java:61)
      	at org.xnio.conduits.ConduitStreamSinkChannel.write(ConduitStreamSinkChannel.java:158)
      	at io.undertow.channels.DetachableStreamSinkChannel.write(DetachableStreamSinkChannel.java:179)
      	at io.undertow.server.HttpServerExchange$WriteDispatchChannel.write(HttpServerExchange.java:2070)
      	at org.xnio.channels.Channels.writeBlocking(Channels.java:152)
      	at io.undertow.io.UndertowOutputStream.write(UndertowOutputStream.java:185)
      	at io.undertow.io.UndertowOutputStream.write(UndertowOutputStream.java:105)
      	at com.palantir.conjure.java.client.jaxrs.Repro.lambda$main$0(Repro.java:75)
      	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:376)
      	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
      	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      	at java.base/java.lang.Thread.run(Thread.java:834)
      

            flaviarnn Flavia Rainone
            carterkozak Carter Kozak
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: