IBM Support

IV95073: JIT COMPILED TRAP INSTRUCTIONS CAUSE PROBLEMS ON ZOS

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: The following problems are possible:
    1) CML Lock contention and zIIP eligible Java workloads
    unexpected shifting to GCPs.
    2) SYSDUMP messages showing 0C7 abends as part of normal Java
    execution with no termination.
    3) Data Exceptions causing MVS dump data set creation and 0C7
    abends terminating the Java process.
    4) Performance issues or regressions for code paths which throw
    a lot of Java exceptions
    .
    Stack Trace: N/A
    .
    This problem only applies to the z/OS platform
    

Local fix

  • Trap instructions can be disabled using the following Java
    command line option:
    -Xjit:noResumableTrapHandler
    

Problem summary

  • Beginning with Java 7.0 with the -Xaggressive option and Java
    7.1/7R1 by default, the JIT compiler started using trap
    instructions to implement the implicit checks required by the
    Java specification done by the Java Virtual Machine for
    exception cases, e.g. NullPointerExceptions and
    ArrayIndexOutOfBounds.
    Like many optimizations, this involves a trade-off which
    benefits the main path but hurts the exception path.
    The implementation creates a 0C7 Data Exception when the Java
    exception needs to be thrown. This Data Exception signal needs
    to be passed to the JVM in order for Java execution to resume.
    The 4 problems that can arise are explained:
    1) When a high volume of exceptions get thrown in parallel, the
    0C7 Data Exceptions get serialized going through z/OS Recovery
    Termination Manager causing CML Lock contention and this also
    can cause the zIIP eligible Java workload to shift to GCPs.
    2) The 0C7 Data Exceptions will get logged as SYSDUMP 0C7 abends
    if that is not suppressed. A Java program can potentially throw
    thousands of exceptions which can cause a lot of noise in system
    logs.
    3) If the 0C7 Data Exception gets intercepted by a handler which
    does not pass it on to the JVM, a 0C7 abend will happen and a
    dump may be produced and the Java process will terminate.
    Correct signal chaining is required by the Java specification to
    avoid this scenario.
    4) Because of the inherent trade-off in using trap instructions,
    if the exception path is heavily used, then this can have a
    significant and noticeable negative effect on performance. To be
    clear, regardless of how exceptions are implemented in the JVM,
    any Java program that heavily relies on throwing exceptions will
    not be following Java programming best practices and will not
    achieve optimal performance, but the use of trap instructions
    exacerbates this.
    

Problem conclusion

  • Trap instructions have been disabled by default on the z/OS
    platform. They may be enabled using the following Java command
    line option:
    -Xjit:enableTraps
    .
    This APAR will be fixed in the following Java Releases:
       7    SR10 FP5  (7.0.10.5)
       7 R1 SR4 FP5   (7.1.4.5)
       8    SR4 FP5   (8.0.4.5)
    .
    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

    IV95073

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    260

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-04-12

  • Closed date

    2017-04-19

  • Last modified date

    2017-04-25

  • 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

  • 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:
25 April 2017