APAR status
Closed as program error.
Error description
Error Message: ASSERTION FAILED ** at ../../../../gc_glue_java/ScavengerRootScanner.hpp:108: ((MM_StackSlotValidator(MM_StackSlotValidator::NOT_ON_HEAP, *slotPtr, stackLocation, walkState).validate(_env))) . Stack Trace: In a javacore file produced, information similar to the following might be found: 3XEHSTTYPE 21:54:46:573159000 GMT j9mm.479 - * ** ASSERTION FAILED ** at ../../../../gc_glue_java/ScavengerRootScanner.hpp:108: ((MM_StackSlotValidator(MM_StackSlotValidator::NOT_ON_HEAP, *slotPtr, stackLocation, walkState).validate(_env))) 3XEHSTTYPE 21:54:46:573156000 GMT j9mm.491 - *<StackSlotValidator::reportStackSlot 3XEHSTTYPE 21:54:46:573154000 GMT j9mm.493 - * stack=AEBF5550-AEBFB168 3XEHSTTYPE 21:54:46:573145000 GMT j9mm.490 - * method=B3ACE300 (MyJavaClass.myMethod(LArgumentType;)V) (Interpreted) 3XEHSTTYPE 21:54:46:573135000 GMT j9mm.489 - * jitInfo=00000000 3XEHSTTYPE 21:54:46:573128000 GMT j9mm.488 - * literals=B3ACE300 3XEHSTTYPE 21:54:46:573122000 GMT j9mm.487 - * walkSP=AEBFAF50 3XEHSTTYPE 21:54:46:573115000 GMT j9mm.486 - * arg0EA=AEBFAF74 3XEHSTTYPE 21:54:46:573108000 GMT j9mm.485 - * framesWalked=1 3XEHSTTYPE 21:54:46:573101000 GMT j9mm.484 - * PC=B39210D0 3XEHSTTYPE 21:54:46:573094000 GMT j9mm.483 - * O-Slot value=B40E3094 3XEHSTTYPE 21:54:46:573087000 GMT j9mm.482 - * O-Slot=AEBFAF5C 3XEHSTTYPE 21:54:46:573076000 GMT j9mm.481 - * Object neither in heap nor stack-allocated in thread Pooled Thread #10 .
Local fix
The failure can be worked around by specifying the -Xjit:disableEscapeAnalysis option. Note that specifying this option might have an effect on program performance
Problem summary
The Escape Analysis (EA) optimizer of the Java JIT compiler attempts to allocate some Java objects on the stack for a method invocation rather than the heap if the use of those objects is entirely contained within that method invocation. This is done in order to improve performance by reducing the amount of object allocation on the heap. If an object might still be used outside the method invocation - which is referred to as "escaping" - but relatively infrequently, EA might still allocate the object on the stack. It will generate code that will copy the object into an object allocated on the heap at the point at which the escape occurs. One example of such escaping can occur if a method that has been JIT compiled has to transfer execution of that method to the JVM interpreter while the method is executing. Any objects that were allocated on the stack by EA that need to be accessible to the interpreter in order for it to continue executing the method must be copied to heap allocated objects at the point of the transfer of execution to the interpreter. In the case that triggers the assertion failure, an object that had been allocated on the stack by EA was not copied to a heap allocated object at the point of transition to the interpreter. The JVM Garbage Collector did not recognize the address of that object as being on the heap nor being a still valid address on the stack, and it reported the assertion failure.
Problem conclusion
The problem was fixed by ensuring the Escape Analysis optimizer correctly identifies cases in which a stack allocated object needs to be copied to a heap allocated object at the point at which the invocation of a Java JIT compiled method needs to transfer its execution to the JVM interpreter. . This APAR will be fixed in the following Java Releases: 8 SR6 FP15 (8.0.6.15) . Contact your IBM Product's Service Team for these Service Refreshes and Fix Packs. For those running stand-alone, information about the available Service Refreshes and Fix Packs can be found at: https://www.ibm.com/developerworks/java/jdk/
Temporary fix
Comments
APAR Information
APAR number
IJ25978
Reported component name
JIT
Reported component ID
620700124
Reported release
130
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2020-06-30
Closed date
2020-06-30
Last modified date
2020-06-30
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
JIT
Fixed component ID
620700124
Applicable component levels
[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSNVBF","label":"Runtimes for Java Technology"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"130","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]
Document Information
Modified date:
01 July 2020