]
Balavignesh sethupathi commented on WFLY-4696:
----------------------------------------------
Hi [~swd847],
We have this same issue occurring in one of our production servers. We have not be able to
reproduce this in our lab setup until now.
The direct buffer memory is filled up to 12gb(-Xmx) before we start to see the exceptions
in the logs.
Any help on reproducing this issue to check if the
OutOfMemory DirectByteBuffer XNIO
---------------------------------
Key: WFLY-4696
URL:
https://issues.jboss.org/browse/WFLY-4696
Project: WildFly
Issue Type: Bug
Components: IO, Web (Undertow)
Affects Versions: 8.1.0.Final, 8.2.0.Final, 9.0.0.Final
Reporter: Carlos RodrÃguez Aguado
Assignee: Stuart Douglas
Priority: Blocker
Fix For: 10.0.0.CR1
Attachments: wfly9_0_0_final.mp4, wlfy.mp4
I get this errors constantly in my server when a web connection is interrupted from the
browser for instance:
11:50:45,301 ERROR [stderr] (default task-339) Exception in thread "default
task-339" java.nio.BufferOverflowException
11:50:45,301 ERROR [stderr] (default task-339) at
java.nio.DirectByteBuffer.put(DirectByteBuffer.java:363)
11:50:45,301 ERROR [stderr] (default task-339) at
java.nio.ByteBuffer.put(ByteBuffer.java:859)
11:50:45,301 ERROR [stderr] (default task-339) at
io.undertow.util.HttpString.appendTo(HttpString.java:204)
11:50:45,301 ERROR [stderr] (default task-339) at
io.undertow.server.protocol.http.HttpResponseConduit.processWrite(HttpResponseConduit.java:150)
11:50:45,301 ERROR [stderr] (default task-339) at
io.undertow.server.protocol.http.HttpResponseConduit.flush(HttpResponseConduit.java:629)
11:50:45,301 ERROR [stderr] (default task-339) at
io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.flush(AbstractFixedLengthStreamSinkConduit.java:205)
11:50:45,301 ERROR [stderr] (default task-339) at
org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162)
11:50:45,301 ERROR [stderr] (default task-339) at
io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:100)
11:50:45,301 ERROR [stderr] (default task-339) at
io.undertow.server.HttpServerExchange.closeAndFlushResponse(HttpServerExchange.java:1489)
11:50:45,317 ERROR [stderr] (default task-339) at
io.undertow.server.HttpServerExchange.endExchange(HttpServerExchange.java:1470)
11:50:45,317 ERROR [stderr] (default task-339) at
io.undertow.server.Connectors.executeRootHandler(Connectors.java:201)
11:50:45,317 ERROR [stderr] (default task-339) at
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727)
11:50:45,317 ERROR [stderr] (default task-339) at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
11:50:45,317 ERROR [stderr] (default task-339) at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
11:50:45,317 ERROR [stderr] (default task-339) at java.lang.Thread.run(Thread.java:745)
And then, I think this errors lead to a OutOfMemory crash:
14:23:09,592 ERROR [org.xnio.listener] (default I/O-3) XNIO001007: A channel event
listener threw an exception: java.lang.OutOfMemoryError
at sun.misc.Unsafe.allocateMemory(Native Method) [rt.jar:1.8.0_20]
at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:127) [rt.jar:1.8.0_20]
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311) [rt.jar:1.8.0_20]
at org.xnio.BufferAllocator$2.allocate(BufferAllocator.java:57)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at org.xnio.BufferAllocator$2.allocate(BufferAllocator.java:55)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at org.xnio.ByteBufferSlicePool.allocate(ByteBufferSlicePool.java:149)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at org.xnio.ssl.JsseSslConduitEngine.<init>(JsseSslConduitEngine.java:143)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at org.xnio.ssl.JsseSslStreamConnection.<init>(JsseSslStreamConnection.java:71)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at
org.xnio.ssl.JsseAcceptingSslStreamConnection.accept(JsseAcceptingSslStreamConnection.java:45)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at
org.xnio.ssl.JsseAcceptingSslStreamConnection.accept(JsseAcceptingSslStreamConnection.java:37)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at org.xnio.ssl.AbstractAcceptingSslChannel.accept(AbstractAcceptingSslChannel.java:187)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:289)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:286)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at
org.xnio.ChannelListeners$DelegatingChannelListener.handleEvent(ChannelListeners.java:1092)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
[xnio-api-3.2.2.Final.jar:3.2.2.Final]
at org.xnio.nio.NioTcpServerHandle.handleReady(NioTcpServerHandle.java:53)
[xnio-nio-3.2.2.Final.jar:3.2.2.Final]
at org.xnio.nio.WorkerThread.run(WorkerThread.java:539)
[xnio-nio-3.2.2.Final.jar:3.2.2.Final]
This is the trace for version 8.2 of WildFly:
17:17:16,957 ERROR [io.undertow.request] (default task-49) Undertow request failed
HttpServerExchange{ GET /modulab/servlet/ShowPDFReportServlet}:
java.nio.BufferOverflowException
at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:363) [rt.jar:1.8.0_20]
at java.nio.ByteBuffer.put(ByteBuffer.java:859) [rt.jar:1.8.0_20]
at io.undertow.util.HttpString.appendTo(HttpString.java:204)
at
io.undertow.server.protocol.http.HttpResponseConduit.processWrite(HttpResponseConduit.java:166)
at
io.undertow.server.protocol.http.HttpResponseConduit.write(HttpResponseConduit.java:564)
at
io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.write(AbstractFixedLengthStreamSinkConduit.java:106)
at org.xnio.conduits.Conduits.writeFinalBasic(Conduits.java:132)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at
io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.writeFinal(AbstractFixedLengthStreamSinkConduit.java:175)
at
org.xnio.conduits.ConduitStreamSinkChannel.writeFinal(ConduitStreamSinkChannel.java:104)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at
io.undertow.channels.DetachableStreamSinkChannel.writeFinal(DetachableStreamSinkChannel.java:194)
at
io.undertow.server.HttpServerExchange$WriteDispatchChannel.writeFinal(HttpServerExchange.java:1829)
at
io.undertow.servlet.spec.ServletOutputStreamImpl.writeBufferBlocking(ServletOutputStreamImpl.java:565)
at
io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:600)
at
io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter(HttpServletResponseImpl.java:497)
at
io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:581)
at
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:308)
at
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:247)
at
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:76)
at
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:166)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:197)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:759)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[rt.jar:1.8.0_20]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[rt.jar:1.8.0_20]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_20]
10:57:12,389 ERROR [org.xnio.listener] (default I/O-4) XNIO001007: A channel event
listener threw an exception: java.lang.OutOfMemoryError
at sun.misc.Unsafe.allocateMemory(Native Method) [rt.jar:1.8.0_20]
at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:127) [rt.jar:1.8.0_20]
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311) [rt.jar:1.8.0_20]
at org.xnio.BufferAllocator$2.allocate(BufferAllocator.java:57)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at org.xnio.BufferAllocator$2.allocate(BufferAllocator.java:55)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at org.xnio.ByteBufferSlicePool.allocate(ByteBufferSlicePool.java:143)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at org.xnio.ssl.JsseSslConduitEngine.<init>(JsseSslConduitEngine.java:146)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at org.xnio.ssl.JsseSslStreamConnection.<init>(JsseSslStreamConnection.java:71)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at
org.xnio.ssl.JsseAcceptingSslStreamConnection.accept(JsseAcceptingSslStreamConnection.java:45)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at
org.xnio.ssl.JsseAcceptingSslStreamConnection.accept(JsseAcceptingSslStreamConnection.java:37)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at org.xnio.ssl.AbstractAcceptingSslChannel.accept(AbstractAcceptingSslChannel.java:187)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:289)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:286)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at
org.xnio.ChannelListeners$DelegatingChannelListener.handleEvent(ChannelListeners.java:1092)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
[xnio-api-3.3.0.Final.jar:3.3.0.Final]
at org.xnio.nio.NioTcpServerHandle.handleReady(NioTcpServerHandle.java:53)
[xnio-nio-3.3.0.Final.jar:3.3.0.Final]
at org.xnio.nio.WorkerThread.run(WorkerThread.java:539)
[xnio-nio-3.3.0.Final.jar:3.3.0.Final]