IBM Support

IV75206: JAVA 8 JIT: INCORRECT BRANCH BASED ON BITWISE COMPLEMENT

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: Unexpected exception thrown:
    ArrayIndexOutOfBoundsException
    .
    Stack Trace: Throwable #1:
    java.lang.ArrayIndexOutOfBoundsException
           at
    __randomizedtesting.SeedInfo.seed(<OSB>831619B333C362E6:B6EC6414
    93EA4AD3<CSB>:0)
           at
    org.apache.lucene.uninverting.DocTermOrds$OrdWrappedTermsEnum.se
    ekCeil(DocTermOrds.java:692)
           at
    org.apache.lucene.uninverting.TestFieldCacheVsDocValues.assertEq
    uals(TestFieldCacheVsDocValues.java:570)
           at
    org.apache.lucene.uninverting.TestFieldCacheVsDocValues.assertEq
    uals(TestFieldCacheVsDocValues.java:511)
           at
    org.apache.lucene.uninverting.TestFieldCacheVsDocValues.doTestSo
    rtedSetVsUninvertedField(TestFieldCacheVsDocValues.java:396)
           at
    org.apache.lucene.uninverting.TestFieldCacheVsDocValues.testSort
    edSetFixedLengthVsUninvertedField(TestFieldCacheVsDocValues.java
    :105)
           at java.lang.Thread.run(Thread.java:785)
    .
    Occurs on x86 processors only.
    

Local fix

  • If the stack trace matches exactly, this workaround will work:
    -Xjit:exclude={*OrdWrappedTermsEnum.seekCeil*}
    Otherwise, you'd have to know which method is encountering this
    problem and exclude it.
    

Problem summary

  • The jit compiler performed an erroneous transformation when it
    encountered code of the following equivalent forms:
      if (?variable == 0) ...
    or
      if (variable ? -1 == 0) ...
    The compiler can implement the bitwise complement operation "?"
    using the x86 "not" instruction.  Under certain circumstances,
    the compiler would erroneously implement the "if" branch using
    an instruction that checks the condition codes generated by the
    "not" instruction, but the "not" instruction does not set the
    condition codes, and so the branch may not occur at the correct
    times when the resulting code is executed.
    

Problem conclusion

  • The jit compiler was modified to ensure that correct test and
    branch instructions are generated for this scenario.
    .
    This APAR will be fixed in the following Java Releases:
       8    SR1 FP10  (8.0.1.10)
    .
    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

    IV75206

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2015-07-15

  • Closed date

    2015-07-15

  • Last modified date

    2015-07-15

  • 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:
15 July 2015