IBM Support

IJ32708: JAVA JIT SEGV IN DECREFERENCECOUNT() ON ZOS/ZLINUX WHILE JIT COMPILING

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: JIT: Fatal Crash in the JIT while compiling
    .
    Stack Trace:
    {libj9jit29.so}{OMR::CodeGenerator::decReferenceCount(TR::Node*)
    }
    {libj9jit29.so}{J9::Z::TreeEvaluator::pdloadEvaluator(TR::Node*,
    TR::CodeGenerator*)}
    {libj9jit29.so}{OMR::CodeGenerator::evaluate(TR::Node*)}
    {libj9jit29.so}{J9::Z::TreeEvaluator::pdstoreEvaluator(TR::Node*
    ,TR::CodeGenerator*)}
    {libj9jit29.so}{OMR::CodeGenerator::evaluate(TR::Node*)}
    {libj9jit29.so}{J9::CodeGenerator::doInstructionSelection()}
    {libj9jit29.so}{OMR::CodeGenPhase::performInstructionSelectionPh
    ase(TR::CodeGenerator*,TR::CodeGenPhase*)}
    {libj9jit29.so}{OMR::CodeGenPhase::performAll()}
    {libj9jit29.so}{OMR::CodeGenerator::generateCode()}
    {libj9jit29.so}{OMR::Compilation::compile()}
    .
    The problem can only occur on zOS and zLinux running the J9 JVM
    when using packed decimal variables. Typically this is done by
    Java code that makes use of the com.ibm.jzos package.
    The stack trace must include pdloadEvaluator() when this problem
    occurs.
    

Local fix

  • The problem can be avoided by preventing the JIT from attempting
    to execute the loop version optimization against code that uses
    a packed decimal variables within a loop. Globally this can be
    achieved using the following Java command line option:
    -Xjit:disableLoopVersioner
    For a lower impact option you can disable loop versioner only
    for the java method where the problem had surfaced:
    -Xjit:{pkg/class.method*}(disableLoopVersioner)
    Where pkg/class.method is found in the console or javacore
    output like the following:
    1XHEXCPMODULE  Compiling method: pkg/class.method
    

Problem summary

  • The JIT attempts to optimize loops by privatizing parts of the
    loop. When attempting to privatize packed decimal variables it
    would break some rules specific to packed decimal handling in
    the JIT.
    

Problem conclusion

  • The JIT was changed so that the loop versioner will not attempt
    to privatize when it encounters packed decimal variables.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR6 FP35  (8.0.6.35)
    .
    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

    IJ32708

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2021-05-13

  • Closed date

    2021-06-21

  • Last modified date

    2021-06-21

  • 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

[{"Line of Business":{"code":"LOB36","label":"IBM Automation"},"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"}]

Document Information

Modified date:
22 June 2021