IBM Support

IV87105: JAVA JIT PPC: CRASH EXECUTING BIGDECIMAL DFP OPERATIONS

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 while executing in the following stack
    trace:
    0x0900000000ec7f48 {libj9vm26.so}{JBgetfield}
    <OSB>0x1002b7e0b00<CSB>
    0x0a000100006c3e2c {java/math/BigDecimal.isDFPZero} INT
    <OSB>0xc42fd6a0-0xc42fd768<CSB>
    .
    Stack Trace: The original report of this issue showed a crash in
    the interpreter executing the BigDecimal.isDFPZero() method, but
    other symptoms could occur such as a crash in a compiled form of
    a BigDecimal method or a method that uses BigDecimal routines
    and even corruption of Java heap objects.
    0x900000000ec7f48 {libj9vm26.so}{JBgetfield}
    <OSB>0x1002b7e0b00<CSB>
    0xa000100006c3e2c {java/math/BigDecimal.isDFPZero} INT
    <OSB>0xc42fd6a0-0xc42fd768<CSB>
    .
    The problem can occur only on PowerPC processors (AIX and Linux
    PPC) and only when executing DFP operations within the
    BigDecimal class. The problem is rare because it requires that
    there is a high degree of register pressure resulting in the JIT
    using GPR0, which the JIT avoids due to the fact the GPR0 is
    more restricted in how it can be used.
    

Local fix

  • The problem can be avoided by using the following Java command
    line argument:
    -Xnodfpbd
    This option may effect performance in some rare cases, but in
    the general case the option has no effect on performance.
    

Problem summary

  • The JIT compiler replaces some BigDecimal routines with routines
    that use the DFP hardware on PPC. These replacement routines
    failed to mark the target address register used for memory store
    operations so that GPR0 would not be used. This caused the JIT
    to shuffle registers (to avoid using GPR0) within a control flow
    path allowing for the register shuffle to be skipped under some
    conditional paths leaving the potential for bad values to be
    used later in the effected method.
    

Problem conclusion

  • The JIT was modified such that it would correctly exclude GPR0
    for DFP store operations so that any register shuffling would be
    done outside any control flow paths.
    .
    This APAR will be fixed in the following Java Releases:
       6 R1 SR8 FP35  (6.1.8.35)
       7    SR9 FP60  (7.0.9.60)
       6    SR16 FP35 (6.0.16.35)
       7 R1 SR3 FP60  (7.1.3.60)
       8    SR3 FP11  (8.0.3.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

    IV87105

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    260

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-07-20

  • Closed date

    2016-07-21

  • Last modified date

    2016-10-27

  • 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

  • R600 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:
27 October 2016