IBM Support

IJ14950: INTERMITTENT CRASH IN JAVA JIT COMPILER

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: A segmentation error in code that has been
    compiled by the Java JIT compiler is reported intermittently.
    .
    Stack Trace: N/A
    .
    

Local fix

  • The problem can be worked around by specify the option
    -Xjit:disableEscapeAnalysis.  Specifying this option might have
    an effect on program performance.
    

Problem summary

  • One optimization of the Java JIT compiler is known as Escape
    Analysis.  Under this optimization, the compiler identifies Java
    objects whose duration is brief, and it allocates them on the
    run-time stack rather than the Java heap in order to improve the
    run-time performance of the program.  Such an object might be
    allocated on the run-time stack as a contiguous object, or if
    the entire object is not needed, as the individual fields of the
    original object.
    For each object whose individual fields will be allocated on the
    run-time stack, Escape Analysis also analyzes the generated code
    for any checks that the compiler might have generated of whether
    the original object was an instance of a class that overrides
    the finalize() method inherited from java.lang.Object.  Such a
    check is not needed for an object whose individual fields will
    be allocated on the run-time stack as the object as a whole
    doesn't actually exist - Escape Analysis attempts to remove
    those checks.
    In some circumstances, however, an optimization might have been
    applied to the code that checks whether an object was an
    instance of a class that overrides the finalize() method,
    causing Escape Analysis to fail to recognize and remove that
    check.
    The check depends on the address of the object, which is now a
    null reference due to the optimization, triggering the crash.
    

Problem conclusion

  • The problem was fixed by adjusting the pattern Escape Analysis
    uses to recognize generated code that checks whether an object
    was an instance of a class that overrides the finalize() method.
     This change to the pattern allows Escape Analysis to recognize
    the check regardless of whether an optimization was applied to
    that check.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR5 FP31  (8.0.5.31)
    .
    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

    IJ14950

  • 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-03-22

  • Closed date

    2019-03-22

  • Last modified date

    2019-03-22

  • 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:
22 March 2019