IBM Support

IJ07326: JAVA JIT: COMPILE TIME CRASH IN JIT LIBRARY.

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 SIGSEGV/GPF is received when JIT compiling more
    then one method at the same time.
    .
    Stack Trace: {libj9jit28.so}{getEnclosingBlock__10TR_TreeTopFb}
    {libj9jit28.so}{inlineCallTarget2__14TR_InlinerBaseFP12TR_CallSt
    ackP13TR_CallTargetbi}
    {libj9jit28.so}{inlineCallTarget__14TR_InlinerBaseFP12TR_CallSta
    ckP13TR_CallTargetbP14TR_PrexArgInfo}
    {libj9jit28.so}{analyzeCallSite__14TR_DumbInlinerFP12TR_CallStac
    kP10TR_TreeTopP7TR_NodeT3}
    {libj9jit28.so}{inlineCallTargets__14TR_DumbInlinerFP23TR_Resolv
    edMethodSymbolP12TR_CallStackP24TR_InnerPreexistenceInfo}
    {libj9jit28.so}{inlineCallTarget2__14TR_InlinerBaseFP12TR_CallSt
    ackP13TR_CallTargetbi}
    {libj9jit28.so}{inlineCallTarget__14TR_InlinerBaseFP12TR_CallSta
    ckP13TR_CallTargetbP14TR_PrexArgInfo}
    {libj9jit28.so}{inlineCall__13TR_InlineCallFP10TR_TreeTopP19TR_O
    paqueClassBlockbP14TR_PrexArgInfoi}
    {libj9jit28.so}{detectFormatPattern__18TR_StringPeepholesFP10TR_
    TreeTopT1P7TR_Node}
    {libj9jit28.so}{processBlock__18TR_StringPeepholesFP8TR_Block}
    {libj9jit28.so}{process__18TR_StringPeepholesFP10TR_TreeTopT1@AF
    2_1}
    {libj9jit28.so}{perform__18TR_StringPeepholesFv}
    {libj9jit28.so}{IPRA.$performOptimization__16TR_OptimizerImplFPC
    12OptimizationiN22}
    {libj9jit28.so}{performOptimization__16TR_OptimizerImplFPC12Opti
    mizationiN22}
    {libj9jit28.so}{optimize__16TR_OptimizerImplFv}
    The crashing location well vary, but it is very likely that
    detectFormatPattern() will be on the native stack of the
    crashing thread.
    .
    The problem can only occur when more then one compiler threads
    are compiling Java methods that contains a call sequence
    consisting of a call to DecimalFormat.format() taking a
    parameter that results from a call to to
    BigDecimal.doubleValue() or BigDecimal.floatValue().
    i.e.
    DecimalFormat df = new DecimalFormat( "#,###,###,##0" );
    map.put( "Key", df.format(dfph.getBD().doubleValue()) );
    Under this scenario there is a timing window where one compiler
    thread can corrupt data used by the other compiler thread
    resulting in a crash.
    

Local fix

  • The problem can be avoided by using the following Java command
    line option:
    -Xjit:disableDecimalFormatPeephole
    This option will have a very minor effect on performance in most
    cases.
    

Problem summary

  • The JIT was using a single data structure to hold thread
    specific data for all compiler threads. If two threads are using
    this data at the same time it's possible for one compiler thread
    to be exposed to data that was meant to be specific to a
    different compiler thread.
    

Problem conclusion

  • The JIT was modified so that thread specific data is not shared
    with other compiler threads.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR5 FP20  (8.0.5.20)
       7    SR10 FP30 (7.0.10.30)
       6 R1 SR8 FP70  (6.1.8.70)
       7 R1 SR4 FP30  (7.1.4.30)
    .
    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

    IJ07326

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2018-06-22

  • Closed date

    2018-07-25

  • Last modified date

    2018-07-25

  • 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:
25 July 2018