APAR status
Closed as program error.
Error description
Error Message: With Java6, java.io.OutputStreamWriter.write method generates an ArrayIndexOutOfBoundsException while it wasn't generating that exception with Java5 levels. . Stack Trace: Caused by: java.lang.ArrayIndexOutOfBoundsException at java.io.OutputStreamWriter.write(OutputStreamWriter.java:250) at java.io.Writer.write(Writer.java:152) at org.apache.log4j.helpers.CountingQuietWriter.write(CountingQuiet Writer.java:36) at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:29 9) at org.apache.log4j.RollingFileAppender.subAppend(RollingFileAppend er.java:225) at org.apache.log4j.WriterAppender.append(WriterAppender.java:150) at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java :221) at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppe nders(AppenderAttachableImpl.java:57) at org.apache.log4j.Category.callAppenders(Category.java:187) at org.apache.log4j.Category.forcedLog(Category.java:372) at org.apache.log4j.Category.log(Category.java:864) at org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.ja va:251) . Sometime system hang is also found after throwing ArrayIndexOutOfBoundsException.
Local fix
N/A
Problem summary
With the the problem reported, once thread tried to write buffer and connection got timed out in between with write request, that particular thread throws IOException and will wind back. The thrown IOExcpetion is caught by user code, by that time the bufferFlushed flag buffer position index is not reset. While next thread it try to write something, it see buffer as empty and index value, System.Arraycopy fails due mismatch between the current index and source array to be copied.
Problem conclusion
This defect will be fixed in: 6.0.0 SR9 FP2 . Problem resolution is to move down bufferFlushed flag down and it will resetted only once the mentioned IO operation a success (like stream wrtie & System.ArrayCopy). This will solve the problem as if user code catch an IOException, we won't set bufferFlushed as true. So the second thread trying the write will try to flush the existing content before copying something new into the buffer. . To obtain the fix: Install build 20101217 or later
Temporary fix
Comments
APAR Information
APAR number
IZ87600
Reported component name
JAVA CLASS LIBS
Reported component ID
620700130
Reported release
600
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2010-11-02
Closed date
2010-12-16
Last modified date
2011-07-09
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
PM26418
Fix information
Fixed component name
JAVA CLASS LIBS
Fixed component ID
620700130
Applicable component levels
R600 PSN
UP
[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSCVQ3Y","label":"Java Class Libraries"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"6.0","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
09 July 2011