IBM Support

PI96604: STREAMCORRUPTEDEXCEPTION IN WORKAREA ON WAS V8.5 WITH JDK 8.0.5.5 (SR5/FP5)

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • when switching from Java7 to Java8 in WAS 8.5.5.13, get the
    following exception when reading properties from the workarea
    service:
    [3/14/18 14:07:59:463 CET] 00000183 SystemErr     R Caused by:
    java.io.
    StreamCorruptedException: invalid type code: 01
    [3/14/18 14:07:59:463 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readObject0(ObjectInputStream.java:1745)
    [3/14/18 14:07:59:463 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readArray(ObjectInputStream.java:2095)
    [3/14/18 14:07:59:463 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readObject0(ObjectInputStream.java:1711)
    [3/14/18 14:07:59:463 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.defaultReadFields(ObjectInputStream.java:2434)
    [3/14/18 14:07:59:463 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.defaultReadObject(ObjectInputStream.java:695)
    [3/14/18 14:07:59:463 CET] 00000183 SystemErr     R     at
    java.math.
    BigInteger.readObject(BigInteger.java:1622)
    [3/14/18 14:07:59:463 CET] 00000183 SystemErr     R     at
    sun.reflect.
    GeneratedMethodAccessor269.invoke(Unknown Source)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    sun.reflect.
    DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
    .java:
    55)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.lang.
    reflect.Method.invoke(Method.java:508)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1230)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readSerialData(ObjectInputStream.java:2325)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2216
    )
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readObject0(ObjectInputStream.java:1717)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.access$900(ObjectInputStream.java:225)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream$GetFieldImpl.readFields(ObjectInputStream.java
    :2598)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readFields(ObjectInputStream.java:735)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.math.
    BigDecimal.readObject(BigDecimal.java:8472)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    sun.reflect.
    GeneratedMethodAccessor268.invoke(Unknown Source)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    sun.reflect.
    DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
    .java:
    55)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.lang.
    reflect.Method.invoke(Method.java:508)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1230)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readSerialData(ObjectInputStream.java:2325)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2216
    )
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readObject0(ObjectInputStream.java:1717)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readObjectImpl(ObjectInputStream.java:537)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    java.io.
    ObjectInputStream.readObject(ObjectInputStream.java:472)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at
    com.ibm.ws.
    workarea.WorkAreaHolder$1.run(WorkAreaHolder.java:75)
    [3/14/18 14:07:59:464 CET] 00000183 SystemErr     R     at java.
    security.AccessController.doPrivileged(AccessController.java:694
    )
    

Local fix

  • this issue can be avoided with
    "-Dsun.lang.ClassLoader.allowArraySyntax=true"
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server using WorkArea                       *
    ****************************************************************
    * PROBLEM DESCRIPTION: When using WorkArea with BigInteger     *
    *                      , or BigDecimal, and when running with  *
    *                      JDK SR5/FP5, the following exception    *
    *                      can occur:                              *
    *                      Caused by:                              *
    *                      java.io.StreamCorruptedException:       *
    *                      invalid type code: 01                   *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readObject0(O *
    *                      bjectInputStream.java:1745)             *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readArray(Obj *
    *                      ectInputStream.java:2095)               *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readObject0(O *
    *                      bjectInputStream.java:1711)             *
    *                      at                                      *
    *                      java.io.ObjectInputStream.defaultReadFi *
    *                      elds(ObjectInputStream.java:2434)       *
    *                      at                                      *
    *                      java.io.ObjectInputStream.defaultReadOb *
    *                      ject(ObjectInputStream.java:695)        *
    *                      at                                      *
    *                      java.math.BigInteger.readObject(BigInte *
    *                      ger.java:1622)                          *
    *                      at                                      *
    *                      sun.reflect.NativeMethodAccessorImpl.in *
    *                      voke0(Native                            *
    *                      Method)                                 *
    *                      at                                      *
    *                      sun.reflect.NativeMethodAccessorImpl.in *
    *                      voke(NativeMethodAccessorImpl.java:90)  *
    *                      at                                      *
    *                      sun.reflect.DelegatingMethodAccessorImp *
    *                      l.invoke(DelegatingMethodAccessorImpl.j *
    *                      ava:55)                                 *
    *                      at                                      *
    *                      java.lang.reflect.Method.invoke(Method. *
    *                      java:508)                               *
    *                      at                                      *
    *                      java.io.ObjectStreamClass.invokeReadObj *
    *                      ect(ObjectStreamClass.java:1230)        *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readSerialDat *
    *                      a(ObjectInputStream.java:2325)          *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readOrdinaryO *
    *                      bject(ObjectInputStream.java:2216)      *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readObject0(O *
    *                      bjectInputStream.java:1717)             *
    *                      at                                      *
    *                      java.io.ObjectInputStream.access$900(Ob *
    *                      jectInputStream.java:225)               *
    *                      at                                      *
    *                      java.io.ObjectInputStream$GetFieldImpl. *
    *                      readFields(ObjectInputStream.java:2598) *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readFields(Ob *
    *                      jectInputStream.java:735)               *
    *                      at                                      *
    *                      java.math.BigDecimal.readObject(BigDeci *
    *                      mal.java:8472)                          *
    *                      at                                      *
    *                      sun.reflect.NativeMethodAccessorImpl.in *
    *                      voke0(Native                            *
    *                      Method)                                 *
    *                      at                                      *
    *                      sun.reflect.NativeMethodAccessorImpl.in *
    *                      voke(NativeMethodAccessorImpl.java:90)  *
    *                      at                                      *
    *                      sun.reflect.DelegatingMethodAccessorImp *
    *                      l.invoke(DelegatingMethodAccessorImpl.j *
    *                      ava:55)                                 *
    *                      at                                      *
    *                      java.lang.reflect.Method.invoke(Method. *
    *                      java:508)                               *
    *                      at                                      *
    *                      java.io.ObjectStreamClass.invokeReadObj *
    *                      ect(ObjectStreamClass.java:1230)        *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readSerialDat *
    *                      a(ObjectInputStream.java:2325)          *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readOrdinaryO *
    *                      bject(ObjectInputStream.java:2216)      *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readObject0(O *
    *                      bjectInputStream.java:1717)             *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readObjectImp *
    *                      l(ObjectInputStream.java:537)           *
    *                      at                                      *
    *                      java.io.ObjectInputStream.readObject(Ob *
    *                      jectInputStream.java:472)               *
    *                      at                                      *
    *                      com.ibm.ws.workarea.WorkAreaHolder$1.ru *
    *                      n(WorkAreaHolder.java:75)               *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    Example:
    //Also BigDecimal(1)
    Object value = BigInteger("1");
    String type = value.getClass().getSimpleName();
    Workarea workArea = new Workarea(type);
    workArea.begin();
    workArea.setProperty(type, value);
    //An ffdc exception will be thrown from this invocation
    //the result will be returned as 'null'
    Object returnedValue = workArea.getProperty(type);
    Issue:
    The base issue is with the JDK FP. When WorkArea attempts
    to load the BigInteger/BigDecimal class, we load a byte[]. The
    "[" in the class name indicates array syntax.  That's not
    intended to be allowed in a class loading operation, but IBM's
    Java implementation has tolerated it in the past. That
    changed in fixpack FP5 - in an attempt to more strictly
    interpret the specification, that syntax is no longer
    allowed and results in a ClassNotFoundException. The CNFE is
    being swallowed by the JDK, but it leads to the exception we
    are seeing.
    

Problem conclusion

  • The fix for this APAR is in WorkArea's classloading
    implementation.
    
    The fix for this APAR is currently targeted
    for inclusion in Service Level (Fix Pack) 9.0.0.9 and
    8.5.5.14. Please refer to the
    Recommended Updates
    page for delivery information:
    http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980
    

Temporary fix

Comments

APAR Information

  • APAR number

    PI96604

  • Reported component name

    WEBSPHERE APP S

  • Reported component ID

    5724J0800

  • Reported release

    850

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2018-04-11

  • Closed date

    2018-08-16

  • Last modified date

    2018-08-16

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    WEBSPHERE APP S

  • Fixed component ID

    5724J0800

Applicable component levels

  • R850 PSY

       UP

  • R900 PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud \u0026 Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"850","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
18 October 2021