IBM Support

IJ04249: JAVA JIT PPC - CRASH EXECUTING SOME JAVA.UTIL.CONCURRENT.ATOMIC.ATOMIC* ROUTINES

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 when executing
    AtomicInteger.getAndDecrement(), but the issue might effect the
    following Atomic functions as well.
    java_util_concurrent_atomic_AtomicBoolean_getAndSet
    java_util_concurrent_atomic_AtomicInteger_getAndAdd
    java_util_concurrent_atomic_AtomicInteger_getAndIncrement
    java_util_concurrent_atomic_AtomicInteger_getAndDecrement
    java_util_concurrent_atomic_AtomicInteger_getAndSet
    java_util_concurrent_atomic_AtomicInteger_addAndGet
    java_util_concurrent_atomic_AtomicInteger_incrementAndGet
    java_util_concurrent_atomic_AtomicInteger_decrementAndGet
    java_util_concurrent_atomic_AtomicIntegerArray_getAndAdd
    java_util_concurrent_atomic_AtomicIntegerArray_getAndIncrement
    java_util_concurrent_atomic_AtomicIntegerArray_getAndDecrement
    java_util_concurrent_atomic_AtomicIntegerArray_getAndSet
    java_util_concurrent_atomic_AtomicIntegerArray_addAndGet
    java_util_concurrent_atomic_AtomicIntegerArray_incrementAndGet
    java_util_concurrent_atomic_AtomicIntegerArray_decrementAndGet
    .
    Stack Trace: 0xfff94406b9c
    {com/ibm/io/async/ResultHandler.runEventProcessingLoop} JIT
    0xfff95fa1570 {com/ibm/io/async/ResultHandler$2.run} JIT
    0xfff93da6b18 {com/ibm/ws/util/ThreadPool$Worker.run} JIT
    The issue was seen when executing in the above stack trace, but
    the issue could occur in any java code that calls the
    java.util.concurrent.atomic.Atomic* routines listed in this
    APAR.
    .
    The issue can only happen on the PowerPC platform and only on
    Java8 SR5 through Java 8 SR5FP10.
    The problem will only occur when a level of contention exists
    that causes the atomic update to execute a 2nd attempt at
    performing the atomic update. If there is no contention then the
    1st atomic update will succeed and the issue will not occur.
    In addition, the issue can only occur when there the JIT is
    compiling a method that is complex enough to generate a
    significant amount of "register pressure" such that the JIT
    assigns register R0 to a specific purpose within the atomic
    update code.
    Given the above two restrictions, it is very unlikely that this
    issue will occur under normal conditions.
    

Local fix

  • The problem can be avoided by excluding the compilation of the
    failing method using the following java command line argument:
    -Xjit:exclude={failing_method}
    Where "failing_method" is the full method name as seen in the
    javacore from the failure. Consider using (* after the method
    name to avoid having to provide the complete parameter and
    return type signatures, e.g.
    
    -Xjit:exclude={com/ibm/SomeClass.amethod(*}
    

Problem summary

  • The JIT did not prevent the use of register R0 when implementing
    some set of Atomic functions that use PPC instructions with
    special handling for R0. This caused the JIT register assigner
    to incorrectly "spill" the register in the middle of a loop
    which results in a crash on the 2nd iteration of the loop.
    

Problem conclusion

  • The JIT was modified such that the use of R0 is prevented in
    handling Atomic methods where instruction are generated that
    can't use R0.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR5 FP11  (8.0.5.11)
    .
    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

    IJ04249

  • 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-02-19

  • Closed date

    2018-02-21

  • Last modified date

    2018-05-24

  • 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:
24 May 2018