IBM Support

IV90998: JAVA JIT: CRASH IN JAVALOOKUPMETHODIMPL

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 when running the IBM JVM version
    8.0
    .
    Stack Trace: {libj9vm28.so}{javaLookupMethodImpl}
     {libj9vm28.so}{resolveSpecialMethodRefInto
     {libj9jit28.so}{jitResolveSpecialMethodRef}
     {libj9jit28.so}{getResolvedSpecialMethod__19TR_ResolvedJ9Method
    FP14TR_CompilationiPb}
     {libj9jit28.so}{realEstimateCodeSize__21TR_J9EstimateCodeSizeFP
    13TR_CallTargetP12TR_CallStackb}
     {libj9jit28.so}{estimateCodeSize__21TR_J9EstimateCodeSizeFP13TR
    _CallTargetP12TR_CallStackb}
     {libj9jit28.so}{calculateCodeSize__19TR_EstimateCodeSizeFP13TR_
    CallTargetP12TR_CallStackb}
     {libj9jit28.so}{applyPolicyToTargets__14TR_InlinerBaseFP12TR_Ca
    llStackP11TR_CallSite}
     {libj9jit28.so}{getSymbolAndFindInlineTargets__14TR_InlinerBase
    FP12TR_CallStackP11TR_CallSiteb}
     ...
    The top methods may very slightly but realEstimateCodeSize(),
    and ether getResolvedSpecialMethod() or
    getResolvedStaticMethod() must be on the stack
    .
    The problem can only occur on Java8, but it can occur on any
    platform (x86, POWER, zSeries).
    

Local fix

  • The problem can only be avoided by preventing the JIT compiler
    from inlining effected methods. Excluding the compilation of the
    method being compiled when the crash occurs for example, or
    disabling inlining entirely (but that would have a significant
    performance penalty).
    -Xjit:disableInlining
    

Problem summary

  • The JVM has some special handling for a class constant pool
    entry that is used for both invokespecial and invokestatic
    bytecodes. When the JIT is asking the VM to resolve such
    constant pool entries it must pass a flag to the VM to insure it
    properly handles the constant pool entry. In the case where the
    JIT was inlining methods that are using such constant pool
    entries it failed to use the correct flag causing the JVM to
    fail when resolving the special constant pool entry.
    

Problem conclusion

  • The JIT was modified to pass the correct flag during resolving
    special constant pool entries during inlining.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR4       (8.0.4.0)
    .
    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

    IV90998

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-11-23

  • Closed date

    2016-12-05

  • Last modified date

    2016-12-05

  • 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

  • R130 PSY

       UP

[{"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:
05 December 2016