IBM Support

IJ15793: CRASH DURING JIT COMPILATION

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

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