VOOZH about

URL: https://www.ibm.com/support/pages/apar/IJ35496

⇱ IJ35496: JAVA JIT COMPILE TIME SOF IN TR_INDUCTIONVARIABLEANALYSIS::GETENTRYVALUE()


IJ35496: JAVA JIT COMPILE TIME SOF IN TR_INDUCTIONVARIABLEANALYSIS::GETENTRYVALUE()

APAR status

  • Closed as program error.

Error description

  • Error Message: A SIGSEGV is received when JIT compiling a large
    method (likely a machine generated java method).
    .
    Stack Trace:
    {libj9jit29.so}{getUseDefAliasesBV__Q2_3OMR15SymbolReferenceFbT1
    } <OSB>0x10020d401c0<CSB>
    {libj9jit29.so}{getTRAliases_impl__24TR_NodeAliasSetInterfaceXSP
    1_FbT1} <OSB>0x10020d402a0<CSB>
    {libj9jit29.so}{contains__20TR_AliasSetInterfaceXT24TR_NodeAlias
    SetInterfaceXSP1__FUiPQ2_2TR11Compilation}
    <OSB>0x10020d40380<CSB>
    {libj9jit29.so}{getEntryValue__28TR_InductionVariableAnalysisFPQ
    2_2TR5BlockPQ2_2TR15SymbolReferenceP12TR_BitVectorR8TR_ArrayXTPQ
    2_2TR4Node_} <OSB>0x10020d40450<CSB>
    {libj9jit29.so}{getEntryValue__28TR_InductionVariableAnalysisFPQ
    2_2TR5BlockPQ2_2TR15SymbolReferenceP12TR_BitVectorR8TR_ArrayXTPQ
    2_2TR4Node_} <OSB>0x10020d405e0<CSB>
    {libj9jit29.so}{getEntryValue__28TR_InductionVariableAnalysisFPQ
    2_2TR5BlockPQ2_2TR15SymbolReferenceP12TR_BitVectorR8TR_ArrayXTPQ
    2_2TR4Node_} <OSB>0x10020d40770<CSB>
    --- The getEntryValue() frames will repeat hundreds or thousands
    of times ---
    The crashing method is irrelevant, the crash will occur in
    whatever method overflows the stack. It's the repeated
    getEntryValue() frames that is unique to this issue.
    .
    The problem can occur on any OpenJ9 based JVM (all platforms).
    Typically it occurs when a large amount of code is between the
    definition of a variable and it's use in a loop as an induction
    variable to control the loop.
    

Local fix

  • The problem can be avoid by disabling the compilation of the
    affected method(s):
    -Xjit:exclude={<affected_method_signature>}
    The <affected_method_signature> can be obtained from the java
    console crash data output when the problem occurred.
    

Problem summary

  • The JIT uses a recursive function during induction variables
    analysis. This can cause a SOF (stack overflow) if the method is
    very large and the definition of a variable related to a loop is
    far from the start of the loop it's self.
    

Problem conclusion

  • The JIT was modified to give up looking for a variable
    definition when the depth of the recursion reaches a limit.
    .
    This APAR will be fixed in the following Java Releases:
     8 SR7 (8.0.7.0)
    .
    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

    IJ35496

  • 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-10-08

  • Closed date

    2021-10-08

  • Last modified date

    2021-10-08

  • 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:
13 October 2021