You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by 水野謙 <mi...@interfactory.co.jp> on 2017/02/16 03:10:57 UTC

ArrayIndexOutOfBoundsException in ServletInputStream.readLine

Dear Sirs,

I'm using Apache Tomcat/6.0.48 on Linux and I sometimes see the
following exception.

java.lang.ArrayIndexOutOfBoundsException: 8192
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:391)
at org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:318)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
at javax.servlet.ServletInputStream.readLine(ServletInputStream.java:94)
at org.apache.catalina.connector.CoyoteInputStream.readLine(CoyoteInputStream.java:199)
at jp.co.interfactory.framework.MultiPartParser.retrieveParts(MultiPartParser.java:79)

"MultiPartParser.retrieveParts" is my application and calls readLine
method as follows:
(The actual program is more complicated and I extracted the code
related to the input stream)

        byte[] buf = new byte[8 * 1024];
        ServletInputStream istream = request.getInputStream();
        while ((ret = istream.readLine(buf, 0, buf.length)) > -1) {
            // ...
        }

I cannot reproduce this exception but I observe it every couple of
months in our production servers.
I saw the similar exception when I used Apache Tomcat/6.0.44 and the
stacktrace was as follows:

java.lang.ArrayIndexOutOfBoundsException: 8192
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:391)
at org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:317)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
at javax.servlet.ServletInputStream.readLine(ServletInputStream.java:94)
at org.apache.catalina.connector.CoyoteInputStream.readLine(CoyoteInputStream.java:199)
at jp.co.interfactory.framework.MultiPartParser.retrieveParts(MultiPartParser.java:79)


Best Regards

Ken Mizuno
mizuno.ken@interfactory.co.jp

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


Re: ArrayIndexOutOfBoundsException in ServletInputStream.readLine

Posted by 水野謙 <mi...@interfactory.co.jp>.
Hi Violeta,

Thank you for your reponse.
I found the following setting in my server.xml. Does this answer your question?

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
maxThreads="700" packetSize="65536" useBodyEncodingForURI="true" />



2017-02-16 17:07 GMT+09:00 Violeta Georgieva <vi...@apache.org>:
> Hi,
>
> 2017-02-16 5:10 GMT+02:00 水野謙 <mi...@interfactory.co.jp>:
>>
>> Dear Sirs,
>>
>> I'm using Apache Tomcat/6.0.48 on Linux and I sometimes see the
>> following exception.
>>
>> java.lang.ArrayIndexOutOfBoundsException: 8192
>> at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:391)
>> at
> org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:318)
>> at
> org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
>> at javax.servlet.ServletInputStream.readLine(ServletInputStream.java:94)
>> at
> org.apache.catalina.connector.CoyoteInputStream.readLine(CoyoteInputStream.java:199)
>> at
> jp.co.interfactory.framework.MultiPartParser.retrieveParts(MultiPartParser.java:79)
>
> Can you post here the Connectors configuration?
>
> Regards,
> Violeta
>
>>
>> "MultiPartParser.retrieveParts" is my application and calls readLine
>> method as follows:
>> (The actual program is more complicated and I extracted the code
>> related to the input stream)
>>
>>         byte[] buf = new byte[8 * 1024];
>>         ServletInputStream istream = request.getInputStream();
>>         while ((ret = istream.readLine(buf, 0, buf.length)) > -1) {
>>             // ...
>>         }
>>
>> I cannot reproduce this exception but I observe it every couple of
>> months in our production servers.
>> I saw the similar exception when I used Apache Tomcat/6.0.44 and the
>> stacktrace was as follows:
>>
>> java.lang.ArrayIndexOutOfBoundsException: 8192
>> at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:391)
>> at
> org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:317)
>> at
> org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
>> at javax.servlet.ServletInputStream.readLine(ServletInputStream.java:94)
>> at
> org.apache.catalina.connector.CoyoteInputStream.readLine(CoyoteInputStream.java:199)
>> at
> jp.co.interfactory.framework.MultiPartParser.retrieveParts(MultiPartParser.java:79)
>>
>>
>> Best Regards
>>
>> Ken Mizuno
>> mizuno.ken@interfactory.co.jp
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>



-- 
株式会社インターファクトリー   水野 謙
mizuno.ken@interfactory.co.jp

〒102-0071
東京都千代田区富士見2-10-2 飯田橋グラン・ブルーム4階
TEL:03-5211-0056 / FAX:03-5211-0059
http://www.interfactory.co.jp

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


Re: ArrayIndexOutOfBoundsException in ServletInputStream.readLine

Posted by Violeta Georgieva <vi...@apache.org>.
Hi,

2017-02-16 5:10 GMT+02:00 水野謙 <mi...@interfactory.co.jp>:
>
> Dear Sirs,
>
> I'm using Apache Tomcat/6.0.48 on Linux and I sometimes see the
> following exception.
>
> java.lang.ArrayIndexOutOfBoundsException: 8192
> at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:391)
> at
org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:318)
> at
org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
> at javax.servlet.ServletInputStream.readLine(ServletInputStream.java:94)
> at
org.apache.catalina.connector.CoyoteInputStream.readLine(CoyoteInputStream.java:199)
> at
jp.co.interfactory.framework.MultiPartParser.retrieveParts(MultiPartParser.java:79)

Can you post here the Connectors configuration?

Regards,
Violeta

>
> "MultiPartParser.retrieveParts" is my application and calls readLine
> method as follows:
> (The actual program is more complicated and I extracted the code
> related to the input stream)
>
>         byte[] buf = new byte[8 * 1024];
>         ServletInputStream istream = request.getInputStream();
>         while ((ret = istream.readLine(buf, 0, buf.length)) > -1) {
>             // ...
>         }
>
> I cannot reproduce this exception but I observe it every couple of
> months in our production servers.
> I saw the similar exception when I used Apache Tomcat/6.0.44 and the
> stacktrace was as follows:
>
> java.lang.ArrayIndexOutOfBoundsException: 8192
> at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:391)
> at
org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:317)
> at
org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
> at javax.servlet.ServletInputStream.readLine(ServletInputStream.java:94)
> at
org.apache.catalina.connector.CoyoteInputStream.readLine(CoyoteInputStream.java:199)
> at
jp.co.interfactory.framework.MultiPartParser.retrieveParts(MultiPartParser.java:79)
>
>
> Best Regards
>
> Ken Mizuno
> mizuno.ken@interfactory.co.jp
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>