IX90156: OUTOFMEMORYERROR THROWN FROM CDRREADER.READBYTESFORSTRING
Closed as program error.
Error Message: "java/lang/OutOfMemoryError" - "Java heap space" received . Stack Trace: 3XMTHREADINFO "WebContainer : 25" J9VMThread:0x0000000083D81200, j9thread_t:0x00007F947293DAB0, java/lang/Thread:0x0000000010731838, state:R, prio=53XMJAVALTHREAD (java/lang/Thread getId:0xD50, isDaemon:true)3XMTHREADINFO1 (native thread ID:0x7589, native priority:0x5, native policy:UNKNOWN)3XMTHREADINFO2 (native stack address range from:0x00007F9489C39000, to:0x00007F9489C7A000, size:0x41000)3XMTHREADINFO3 Java callstack:4XESTACKTRACE at com/ibm/rmi/iiop/CDRReader.readBytesForString(CDRReader.java:239 4(Compiled Code))4XESTACKTRACE at com/ibm/rmi/iiop/CDRReader.readStringOrIndirection(CDRReader.jav a:496(Compiled Code))4XESTACKTRACE at com/ibm/rmi/iiop/CDRReader.read_string(CDRReader.java:489(Compil ed Code))4XESTACKTRACE at com/ibm/rmi/IOR.read(IOR.java:350(Compiled Code))4XESTACKTRACE at com/ibm/rmi/iiop/CDRReader.read_Object(CDRReader.java:1129(Compi led Code))4XESTACKTRACE at com/ibm/rmi/iiop/CDRReader.fast_read_abstract_interface(CDRReade r.java:1930(Compiled Code))4XESTACKTRACE at com/ibm/rmi/iiop/CDRReader.fast_read_abstract_interface(CDRReade r.java:1918(Compiled Code))4XESTACKTRACE at com/ibm/rmi/io/IIOPInputStream.readObjectDelegate(IIOPInputStrea m.java:392(Compiled Code))4XESTACKTRACE at com/ibm/rmi/io/IIOPInputStream.readObjectOverride(IIOPInputStrea m.java:663(Compiled Code))4XESTACKTRACE at java/io/ObjectInputStream.readObject(ObjectInputStream.java:347( Compiled Code))4XESTACKTRACE at java/util/HashMap.readObject(HashMap.java:953(Compiled Code))4XESTACKTRACE at sun/reflect/GeneratedMethodAccessor114.invoke(Bytecode PC:40(Compiled Code))4XESTACKTRACE at sun/reflect/DelegatingMethodAccessorImpl.invoke(DelegatingMethod AccessorImpl.java:25(Compiled Code))4XESTACKTRACE at java/lang/reflect/Method.invoke(Method.java:600(Compiled Code))4XESTACKTRACE at com/ibm/rmi/io/IIOPInputStream.invokeObjectReader(IIOPInputStrea m.java:1775(Compiled Code)) . Under rare circumstance the same issue can formulate itself as a CORBA MARSHAL exception rather than OutOfMemoryError.
From the stack trace, we can see that ORB tried to allocate a large string while trying to read a Hashmap -java/util/HashMap.readObject. Application code needs to be modified to ensure that they are thread-safe for serialization. Note that, similar errors can also be seen for other non thread-safe collections.
This problem is caused when an HashMap is modified (Values added or removed) while it is being marshalled. While marshalling ORB first writes the size of the HashMap to the stream and then the key-value pairs. When an hashmap is modified while it is being serialized the data written is inconsistent and ORB trips while trying to read the additional or missing key-value pair.This issue is also applicable to other collection objects which are not thread safe.
ORB cannot determine whether a collection object was modified while being marshalled, however we have added better error handling, Rather than trying to allocate huge strings which lead to OOM, ORB will discard such requests and log ffdc appropriately.This fix will only ensure that application doesnt terminates abruptly with OOM. Application code still needs to be changed to address the thread safety issue. . This APAR will be fixed in the following Java Releases: 6 R1 SR8 FP3 (188.8.131.52) 7 SR8 FP10 (184.108.40.206) 7 R1 SR2 FP10 (220.127.116.11) 6 SR16 FP3 (18.104.22.168) . Contact your IBM Product's Service Team for these Service Refreshes and Fix Packs. For those running stand-alone, information about the Service Refreshes and Fix Packs can be found at: https://www.ibm.com/developerworks/java/jdk/
Reported component name
Reported component ID
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
Fixed component ID
Applicable component levels