> Date: Wed, 08 Oct 2003 21:22:07 +0200 > From: Remy Maucherat <[EMAIL PROTECTED]> > Subject: Re: [5] IndexOutOfBoundsException from CharChunk > To: Tomcat Developers List <[EMAIL PROTECTED]> > > Kin-Man Chung wrote: > > > I am getting a sporadic IndexOutOfBoundsException and it seems to come from > > org.apache.tomcat.util.buf.CharChunk.flushBuffer. The trace is > > > > Servlet.service() for servlet jsp threw exception > > java.lang.IndexOutOfBoundsException > > at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:132) > > at java.io.OutputStreamWriter.write(OutputStreamWriter.java:191) > > at org.apache.tomcat.util.buf.WriteConvertor.write(C2BConverter.java:228 > > ) > > at org.apache.tomcat.util.buf.C2BConverter.convert(C2BConverter.java:120 > > ) > > at org.apache.coyote.tomcat5.OutputBuffer.realWriteChars(OutputBuffer.ja > > va:606) > > at org.apache.tomcat.util.buf.CharChunk.flushBuffer(CharChunk.java:463) > > at org.apache.coyote.tomcat5.OutputBuffer.flush(OutputBuffer.java:357) > > at org.apache.coyote.tomcat5.CoyoteWriter.flush(CoyoteWriter.java:117) > > at org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:203) > > at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary > > .java:990) > > ... > > > > In CharChunk, > > > > public void flushBuffer() > > throws IOException > > { > > //assert out!=null > > if( out==null ) { > > throw new IOException( "Buffer overflow, no sink " + limit + " " + > > buff.length ); > > } > > out.realWriteChars( buff, start, end - start ); > > end=start; > > } > > > > when realWriteChars is called, the value for start is 0, end is 16384, and > > buff.length is 8192, hence the exception. > > > > Does anyone knows how end can go beyond 8192? This only hapeens very > > rarely, under heavy load. > > I don't know. I suppose limit is 8192 also. Are you sure your test is > clean, and without anything weird ? (somehow, I doubt it) > I've changed a bit the algorithm in ByteChunk, and it seems better, but > the CharChunk algorithm is identical in 4.1's ByteChunk and CharChunk. > We would have noticed anything bad, I think. >
I don't know much about the test; it is one of stress test we have, but it should not affect CharChunk this way, right, even if it has something weird? Like I said, this happens only in this test, and not always reproducible, so I am not surprised that nobody noticed it in 4.1. I thought it might be thread related, but each thread should have its own CharChunk instance, so I can't see how. I look into this more and report back. -Kin-man > Remy > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]