IBM Support

IV68296: MISSING RELOCATION IN AOT-COMPILED METHOD CAUSES JVM TO CRASH

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 or S0C4 ABEND is raised when an
    ahead-of-time (AOT) compiled Java method attempts to cast an
    object to a different type. The problem is most frequently
    observed in the AxesWalker.cloneDeep() method, with the
    following call stack for example, but the problem can
    potentially affect other code that calls the overridden clone()
    method recursively.
    .
    Stack Trace:
    org/apache/xpath/axes/AxesWalker.cloneDeep()org/apache/xpath/axe
    s/WalkingIterator.clone()org/apache/xpath/axes/IteratorPool.getI
    nstance()org/apache/xpath/axes/LocPathIterator.asIterator()org/a
    pache/xalan/templates/ElemForEach.transformSelectedNodes()
    .
    This problem is only triggered on System z (both z/OS and Linux)
    if the shared class cache is enabled.
    

Local fix

  • This issue can be avoided by first clearing the shared class
    cache (with the -Xshareclasses:destroy option), and then
    disabling several optimizations in the AOT compiler with this
    option:-Xaot:disableAOTCheckCastInlining,disableAOTInstanceOfInl
    ining,disableAOTMethodEnterExitNote, however, that the
    "disableAOTMethodEnterExit" option will prevent
    methodenter/methodexit tracing (e.g. in a debugger).
    

Problem summary

  • The problem is caused when the AOT compiler incorrectly merges
    two class pointer constants that both need to be relocated at
    run time, but belong to different inlined method calls. As a
    result, in the rare case that the inlining is invalidated at run
    time, the relocation could be skipped, leading to a crash when
    the constant is used on the other, valid code path.
    

Problem conclusion

  • The AOT compiler has been fixed to generate relocatable class
    pointer constants in such situations.
    .
    This APAR will be fixed in the following Java Releases:
       7    SR9       (7.0.9.0)
       6 R1 SR8 FP4   (6.1.8.4)
       7 R1 SR3       (7.1.3.0)
       8    SR1       (8.0.1.0)
       6    SR16 FP4  (6.0.16.4)
    .
    Contact your IBM Product's Service Team for these Service
    Refreshes and Fix Packs.
    For those running stand-alone, information about the Service
    Refreshes and Fix Packs can be found at:
               https://www.ibm.com/developerworks/java/jdk/
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV68296

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    260

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2015-01-06

  • Closed date

    2015-01-12

  • Last modified date

    2015-04-27

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    PI32463

Fix information

  • Fixed component name

    JIT

  • Fixed component ID

    620700124

Applicable component levels

  • R260 PSY

       UP

  • 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":"260","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
27 April 2015