You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by 鄢锦涛 <ji...@CREDITEASE.CN> on 2018/02/02 04:04:18 UTC

Tomcat ArrayIndexOutOfBoundsException in SocketBufferHandler

Hello all,

 My environment : tomcat version is 8.5.23 (default configuration), JDK is 1.8.0_121 and Linux version is centos 3.10.0-327.el7.x86_64
  With this environment, working under stress with http POST calls, After about 80 to 100 virtual users into the test we started seeing broken responses
  I do not know why but unfortunately I have sometimes the following Exception in the logfile. Does anyone know what it the reason

Thanks in advance,
jintaoyan

Logfile:
2018-01-18 14:28:26.855 ERROR [ledger-services-loan-access,,,] 13575 --- [io-8017-exec-11] o.apache.coyote.http11.Http11Processor : Error processing request
java.lang.ArrayIndexOutOfBoundsException: null
at java.nio.HeapByteBuffer.compact(HeapByteBuffer.java:228)
atorg.apache.tomcat.util.net.SocketBufferHandler.setWriteBufferConfiguredForWrite(SocketBufferHandler.java:109)
at org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite(SocketBufferHandler.java:91)
at org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking(SocketWrapperBase.java:447)
at org.apache.tomcat.util.net.SocketWrapperBase.write(SocketWrapperBase.java:388)
at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.doWrite(Http11OutputBuffer.java:644)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:121)
at org.apache.coyote.http11.Http11OutputBuffer.doWrite(Http11OutputBuffer.java:235)
at org.apache.coyote.Response.doWrite(Response.java:541)
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:351)
at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:815)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:310)
at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:263)
at org.apache.catalina.connector.Response.finishResponse(Response.java:484)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:373)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)


2018-01-18 14:28:26.860 ERROR [ledger-services-loan-access,,,] 13575 --- [io-8017-exec-11] o.apache.coyote.http11.Http11Processor : Error finishing response
java.lang.ArrayIndexOutOfBoundsException: null
at java.nio.HeapByteBuffer.compact(HeapByteBuffer.java:228)
atorg.apache.tomcat.util.net.SocketBufferHandler.setWriteBufferConfiguredForWrite(SocketBufferHandler.java:109)
at org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite(SocketBufferHandler.java:91)
at org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking(SocketWrapperBase.java:447)
at org.apache.tomcat.util.net.SocketWrapperBase.write(SocketWrapperBase.java:388)
at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.doWrite(Http11OutputBuffer.java:644)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.end(ChunkedOutputFilter.java:184)
at org.apache.coyote.http11.Http11OutputBuffer.finishResponse(Http11OutputBuffer.java:327)
at org.apache.coyote.http11.Http11Processor.endRequest(Http11Processor.java:1524)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:843)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)



Re: Tomcat ArrayIndexOutOfBoundsException in SocketBufferHandler

Posted by Mark Thomas <ma...@apache.org>.
On 02/02/18 04:04, 鄢锦涛 wrote:
> Hello all,
> 
>  My environment : tomcat version is 8.5.23 (default configuration), JDK is 1.8.0_121 and Linux version is centos 3.10.0-327.el7.x86_64
>   With this environment, working under stress with http POST calls, After about 80 to 100 virtual users into the test we started seeing broken responses
>   I do not know why but unfortunately I have sometimes the following Exception in the logfile. Does anyone know what it the reason

This is question for the users list.

Mark


> 
> Thanks in advance,
> jintaoyan
> 
> Logfile:
> 2018-01-18 14:28:26.855 ERROR [ledger-services-loan-access,,,] 13575 --- [io-8017-exec-11] o.apache.coyote.http11.Http11Processor : Error processing request
> java.lang.ArrayIndexOutOfBoundsException: null
> at java.nio.HeapByteBuffer.compact(HeapByteBuffer.java:228)
> atorg.apache.tomcat.util.net.SocketBufferHandler.setWriteBufferConfiguredForWrite(SocketBufferHandler.java:109)
> at org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite(SocketBufferHandler.java:91)
> at org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking(SocketWrapperBase.java:447)
> at org.apache.tomcat.util.net.SocketWrapperBase.write(SocketWrapperBase.java:388)
> at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.doWrite(Http11OutputBuffer.java:644)
> at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:121)
> at org.apache.coyote.http11.Http11OutputBuffer.doWrite(Http11OutputBuffer.java:235)
> at org.apache.coyote.Response.doWrite(Response.java:541)
> at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:351)
> at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:815)
> at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:310)
> at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:263)
> at org.apache.catalina.connector.Response.finishResponse(Response.java:484)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:373)
> at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
> at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
> at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
> at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
> at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
> at java.lang.Thread.run(Thread.java:745)
> 
> 
> 2018-01-18 14:28:26.860 ERROR [ledger-services-loan-access,,,] 13575 --- [io-8017-exec-11] o.apache.coyote.http11.Http11Processor : Error finishing response
> java.lang.ArrayIndexOutOfBoundsException: null
> at java.nio.HeapByteBuffer.compact(HeapByteBuffer.java:228)
> atorg.apache.tomcat.util.net.SocketBufferHandler.setWriteBufferConfiguredForWrite(SocketBufferHandler.java:109)
> at org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForWrite(SocketBufferHandler.java:91)
> at org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking(SocketWrapperBase.java:447)
> at org.apache.tomcat.util.net.SocketWrapperBase.write(SocketWrapperBase.java:388)
> at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.doWrite(Http11OutputBuffer.java:644)
> at org.apache.coyote.http11.filters.ChunkedOutputFilter.end(ChunkedOutputFilter.java:184)
> at org.apache.coyote.http11.Http11OutputBuffer.finishResponse(Http11OutputBuffer.java:327)
> at org.apache.coyote.http11.Http11Processor.endRequest(Http11Processor.java:1524)
> at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:843)
> at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
> at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
> at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
> at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
> at java.lang.Thread.run(Thread.java:745)
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org