IBM Support

IJ31686: THE JIT INCORRECTLY COMPILES A METHOD CONSISTING OF NON-JAVAC GENERATED BYTECODES FROM JAVA 8.0.6.20 AND UP TO 8.0.6.30 ACROSS A

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: This problem can cause many kinds of symptoms:
    incorrect program result, exceptions or crashes in the JVM. One
    error message reported is NullPointerException
    .
    Stack Trace: The following is java stack trace for a failure we
    have seen, but this problem can cause other kinds of failures.
    Caused by: java.lang.NullPointerException
            at clojure.core$every_QMARK_.invokeStatic(core.clj:2570)
            at clojure.core$every_QMARK_.invoke(core.clj:2563)
            at
    clojure.core$maybe_destructured.invokeStatic(core.clj:4341)
            at clojure.core$maybe_destructured.invoke(core.clj:4338)
            at clojure.core$fn$psig__1016.invoke(core.clj:4411)
            at clojure.core$map$fn__563.invoke(core.clj:2646)
            at clojure.lang.LazySeq.sval(LazySeq.java:40)
            at clojure.lang.LazySeq.seq(LazySeq.java:49)
    .
    

Local fix

  • This issue can be worked around by excluding the problematic
    java method being JIT compiled using
    -Xjit:exclude={bad/method*},dontInline={bad/method*}
    

Problem summary

  • This problem is caused by the JIT compiler incorrectly
    eliminating stores to local slots where the value to store is
    loaded from the same local slot. When the local slot's value
    changes between the load and the store, the elimination become
    problematic.
    The following is an example of bytecodes that can expose the
    bug, notice that the value of local slot 0 is changed between
    the first load and the last store, and there is no branch in
    between.
    aload_0
    aconst_null
    astore_0
    astore_0
    Bytecodes compiled by javac from java code is unlikely to have
    this pattern
    

Problem conclusion

  • The problem has been fixed in the JIT compiler to not eliminate
    such stores.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR6 FP30  (8.0.6.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

    IJ31686

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2021-03-19

  • Closed date

    2021-03-23

  • Last modified date

    2021-03-23

  • 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

[{"Line of Business":{"code":"LOB36","label":"IBM Automation"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSNVBF","label":"Runtimes for Java Technology"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"130"}]

Document Information

Modified date:
24 March 2021