IBM Support

IZ87600: ARRAYINDEXOUTOFBOUNDSEXCEPTION SEEN WITH OUTPUTSTREAMWRITER

Subscribe

You can track all active APARs for this component.

 

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