IBM Support

IJ44596: JAVA JIT: INVALID HARD-CODING OF STATIC FINAL FIELD OBJECT PROPERTIES

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: SIGSEGV inside JIT compiled code
    .
    Stack Trace: N/A
    .
    The issue effect all IBM JVM (OpenJ9) supported platforms. It is
    mostly likely to cause a problem in AOT compiled bodies that are
    then loaded in to a different JVM instance, but can also cause
    problems in cases where the reflection API is used to modify the
    contents of static final fields.
    

Local fix

  • The problem can be avoided using the following java command line
    options:
    -Xjit:disableLookahead,disableGlobalVP
    -Xaot:disableLookahead,disableGlobalVPeGlobalVP
    The -Xjit options above are for normal non-AOT (non-cached)
    compiles and are unlikely to be required since the issue is far
    more likely with AOT (cached) compiles which is addressed by
    the "-Xaot" option above.
    These options (particularly the disableGlobalVP option) will
    have a measurable effect on performance of around 10% in most
    cases. The disableLookahead option will likely have no effect in
    most cases since the optimization is very rarely used already.
    The performance effect will be felt more for normal (-Xjit) opti
    then when using just the AOT (-Xaot) options.
    

Problem summary

  • The JIT was inspecting heap objects pointed to by static final
    fields and using that information to hard code some values that
    would otherwise have been runtime queries against the object
    (i.e. array length checks). This would happen in some rare cases
    when compiling for AOT, which could cause issues if static final
    fields are initialized differently depending on JVM launch
    conditions. For non-AOT compiles this could still be a problem
    if the fields value is modified using the reflection API after
    compiling the method.
    

Problem conclusion

  • The JIT was modified to remove cases where static final field
    inspection is used for AOT compiles and limit its use in non-AOT
    compiles to cases where we have in place mitigation techniques
    for when the contents of a static final field is modified
    through means like the reflection API.
    .
    This APAR will be fixed in the following Releases:
    .
    IBM SDK, Java Technology Edition
       8    SR8 FP5   (8.0.8.5)
    .
    Contact your IBM Product's Service Team for these Service
    Refreshes and Fix Packs.
    For those running stand-alone, information about the available
    maintenance can be found at:
               https://www.ibm.com/support/pages/java-sdk
    

Temporary fix

Comments

APAR Information

  • APAR number

    IJ44596

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2022-12-13

  • Closed date

    2022-12-14

  • Last modified date

    2023-06-14

  • 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":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSNVBF","label":"Runtimes for Java Technology"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"130","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
14 June 2023