IBM Support

IJ36428: FLOATING POINT EXCEPTION DURING JIT COMPILATION.

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: SIGFPE causes a CICS A147 Abend
    .
    Stack Trace: In Java 7.1
    {libj9jit27.so}{TR_MultipleCallTargetInliner::exceedsSizeThresho
    ld(int,TR_Block*,TR_ByteCodeInfo&,int,TR_ResolvedMethod*,TR_Reso
    lvedMethod*,TR_Node*,bool)}
    {libj9jit27.so}{TR_InlinerBase::findInlineTargets(TR_CallStack*,
    TR_CallSite*)}
    {libj9jit27.so}{TR_EstimateCodeSize::isInlineable(TR_CallStack*,
    TR_CallSite*)}
    {libj9jit27.so}{TR_EstimateCodeSize::estimateCodeSize(TR_CallTar
    get*,TR_CallStack*,bool)}
    {libj9jit27.so}{TR_EstimateCodeSize::calculateCodeSize(TR_CallTa
    rget*,TR_CallStack*,bool)}
    {libj9jit27.so}{TR_InlinerBase::findInlineTargets(TR_CallStack*,
    TR_CallSite*)}
    ...
    In Java 8+ the crashing function would be
    scaleSizeBasedOnBlockFrequency()
    .
    Typically this exception would not result in a FPE being raised,
    but it can still happen when using a custom executable that uses
    JNI to launch the JVM and that executable is setup to raise FPE
    signals rather then ignore the condition. Therefore this issue
    is not possible when using the standard java executable.
    

Local fix

  • The issue can be avoiding by disabling inlining for the method
    where the issue is encountered:
    -Xjit:{<package>/<class>.<method>*}(disableInlining)
    or disable inlining globally, which will have a substantial
    performance impact:
    -Xjit:disableInlining
    

Problem summary

  • The JIT casts the result of an float calculation into a 32bit
    integer, but the original float might overflow the 32bit integer
    resulting in a FPE if the executable is configured to do so.
    

Problem conclusion

  • The JIT was modified so that the target of the float->integer
    cast will be set to MAX_INT when the float is larger then
    MAX_INT.
    .
    This APAR will be fixed in the following Java Releases:
       7 R1 SR5 FP5   (7.1.5.5)
       8    SR7 FP5   (8.0.7.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

    IJ36428

  • 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-12-06

  • Closed date

    2021-12-16

  • Last modified date

    2021-12-16

  • 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:
17 December 2021