IBM Support

IJ55085: JAVA JIT: GC ASSERT DUE TO AN INVALID OBJECT REFERENCE

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 GC asserts with the message "Object neither
    in heap nor stack-allocated". Please note that this assert
    message is by no means unique to the specific issue described by
    this APAR. Therefore, an instance of this assert message is not
    definitive proof that this APAR issue had occurred.
    .
    Stack Trace: N/A
    .
    This problem can occur on any J9 platform as the issue is found
    in common code used on all J9 platforms. The problem will most
    likely have no negative consequences, but in rare cases a GC
    assert will occur. There is a very small possibility that a
    segmentation fault can occur, but there have been no reports of
    this actually occurring.
    

Local fix

  • The issue can be avoided by disabling the Virtual Guard Head
    Merger JIT optimization using the following java command line
    option:
    -Xjit:disableVirtualGuardHeadMerger
    This option should have a minor performance impact. We estimate
    that the effects would be no more than 1-2% on the high end for
    typical scenarios.
    

Problem summary

  • The JIT was allowing an object field load to occur outside an
    object type guard. This allowed for the possibility of loading
    from an incorrect offset in cases where the guard would have
    prevented the execution of inlined code. Since the results of
    the load would only be used inside the guarded section, there
    would be no possibility of this load causing incorrect behavior
    of the java method, but the existence of this incorrect value in
    a register might be noticed by the GC resulting in an assert.
    There is also the possibility that the invalid load could reach
    past the end of an object, and if that object was located at the
    very end of the java heap, the load could result in a
    segmentation fault rather than a GC assert.
    

Problem conclusion

Temporary fix

Comments

APAR Information

  • APAR number

    IJ55085

  • Reported component name

    JIT

  • Reported component ID

    620700124

  • Reported release

    130

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2025-06-17

  • Closed date

    2025-06-20

  • Last modified date

    2025-06-20

  • 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

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

Document Information

Modified date:
20 June 2025