IBM Support

IJ55765: JAVA JIT CRASH DUE TO UNCAUGHT EXCEPTION IN CHECKLIST DESTRUCTOR LEADING TO PROGRAM TERMINATION DURING STACK UNWIND

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: System aborts with "JVMDUMP039I Processing dump
    event" message
    .
    Stack Trace: std::terminate()
    __Invoke__Destructor(...)
    __DoThrow
    __Throw
    J9::SystemSegmentProvider::request(...)
    TR::Region::allocate(...)
    TR_Memory::allocateMemory(...)
    BitVectorPool::release(...)
    TR::Checklist::¯Checklist()
    TR_LoopVersioner::CurLoop::¯CurLoop()
    TR_LoopVersioner::CurLoop::__dftdt()
    __Invoke__Destructor(...)
    __DoThrow
    __Throw
    J9::SystemSegmentProvider::request(...)
    TR::Region::allocate(...)
    .
    The problem occurs during the compilation of a large method (12
    000+ bytecodes) in which the Checklist C++ object is required
    for compilation. The JIT runs out of scratch space and does a
    stack unwind involving the Checklist object.
    During this stack unwind, the Checklist destructor is called.
    However, this destructor requires a memory allocation which
    fails due to the JIT having no scratch space. Throwing during a
    stack unwind is disallowed by C++ and results in program
    termination.
    The issue is in code used by all platforms and theoretically
    could occur on any platform.
    

Local fix

  • The issue can not be eliminated using a java command line
    option, but the chances of hitting the problem can be reduced by
    increasing the JIT scratch space limit above the default of
    256MB. In this example we increase the limit by 50% to 384MB,
    but it can be set even higher if need be. The value is specified
    in KB.
    -Xjit:scratchSpaceLimit=393216
    It is also possible to avoid specific instances of the issue by
    preventing the compilation of affected methods, but this will
    not prevent the same issue from affecting the compilation of
    other methods in the Java application.
    -Xjit:exclude={<method_full_signature>}
    Where <method_full_signature> is the method name as seen in the
    javacore labeled "Compiling method".
    

Problem summary

  • While handling a JIT compile time C++ exception, the runtime
    finds a Checklist object that needs to be destructed. The
    destructor allocates memory which could cause a second exception
    
    if the JIT scratch space memory limit has been reached. This
    would result in the C++ runtime terminating to prevent an
    endless loop of exceptions.
    

Problem conclusion

Temporary fix

Comments

APAR Information

  • APAR number

    IJ55765

  • Reported component name

    J9 COMMON CODE

  • Reported component ID

    620700127

  • Reported release

    290

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2025-09-10

  • Closed date

    2025-09-10

  • Last modified date

    2025-09-15

  • 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

    J9 COMMON CODE

  • Fixed component ID

    620700127

Applicable component levels

[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SSNVBF","label":"Runtimes for Java Technology"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.0","Line of Business":{"code":"LOB08","label":"Cognitive Systems"}}]

Document Information

Modified date:
15 September 2025