APAR status
Closed as program error.
Error description
Error Message: The JVM stops unexpectedly and, depending on configuration, writes crash data including javacore and system core. The javacore will indicate that there was a GPF from libj9jit29.so with InaccessibleAddress: 0000000000000000. In the THREADS section of the javacore the current thread will be one of the JIT Compilation threads. . Stack Trace: This problem can present in different ways depending on the platform. In two cases the crash occurred while the compiler was generating intermediate code for an invokeinterface bytecode instruction: TR_J9ByteCodeIlGenerator::numPlaceholderCalls(int) TR_J9ByteCodeIlGenerator::genNodeAndPopChildren(<OSB>..<CSB>) TR_J9ByteCodeIlGenerator::genInstanceof(int) TR_J9ByteCodeIlGenerator::genInvokeInterface(int) TR_J9ByteCodeIlGenerator::walker(TR::Block*) TR_J9ByteCodeIlGenerator::genILFromByteCodes() TR_J9ByteCodeIlGenerator::genIL() --- TR_J9ByteCodeIlGenerator::genNodeAndPopChildren(<OSB>..<CSB>) TR_J9ByteCodeIlGenerator::genInvokeInterface(int) TR_J9ByteCodeIlGenerator::genILFromByteCodes() TR_J9ByteCodeIlGenerator::internalGenIL() TR_J9ByteCodeIlGenerator::genIL() In a third case the crash didn't happen until later in InvariantArgumentPreexistence: TR_InvariantArgumentPreexistence::processNode(<OSB>..<CSB>) TR_InvariantArgumentPreexistence::processNode(<OSB>..<CSB>) TR_InvariantArgumentPreexistence::perform() OMR::Optimizer::performOptimization(<OSB>..<CSB>) OMR::Optimizer::optimize() OMR::ResolvedMethodSymbol::genIL(<OSB>..<CSB>) . The problem exists only in Java8 SR5 from FP22 onwards.
Local fix
The method(s) that expose the problem can be excluded from compilation by the JIT. For example if the problem shows up in two methods packageA.ClassA.method1 and packageB.ClassB.method2 then an appropriate Xjit option would be: -Xjit:exclude={packageA/ClassA.method1(*<PIPE>packageB/ClassB.me thod2(*},dontInline={packageA/ClassA.method1(*<PIPE>packageB/Cla ssB.method2(*} Note that there can be at most one -Xjit option on the command line, so if there is already an Xjit option in use it will need to be combined with the above for correct operation.
Problem summary
Interface calls that resolve to private methods or methods of Object require special handling by the JIT. An error in the code for these special cases could lead to dereference of a null pointer and the resulting crash. The only bytecode that has been observed to cause this crash is an invokeinterface bytecode instruction calling getClass().
Problem conclusion
The JIT has been modified to correctly handle the case that caused the problem. See the following PR for more detail: https://github.com/eclipse/openj9/pull/5500 . This APAR will be fixed in the following Java Releases: 8 SR5 FP36 (8.0.5.36) . 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
IJ15793
Reported component name
JIT
Reported component ID
620700124
Reported release
130
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2019-04-29
Closed date
2019-04-30
Last modified date
2019-04-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":"BU048","label":"IBM Software"},"Product":{"code":"SSC9HBA","label":"Just In Time (JIT) Compiler"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"130","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
30 April 2019