IBM Support

IJ41693: GC CAN HAVE UNFLUSHED OWNABLE SYNCHRONIZER OBJECTS WHICH CAN EVENTUALLY LEAD TO A HEAP CORRUPTION AND FAILURE WHEN -XGC:CONCURRE

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: Assertion failure when -Xgc:concurrentScavenge is
    set.
    
                             ** ASSERTION FAILED ** at
    ./OwnableSynchronizerObjectBuffer.cpp:100: ((false))
                             or ** ASSERTION FAILED ** at
    ./Scavenger.cpp:1659: ((false))
    .
    Stack Trace:
    MM_MarkingSchemeRootClearer::scanOwnableSynchronizerObjects(MM_E
    nvironmentBase*)+0xea876010 (0x0000000000000000)
    
    MM_RootScanner::scanClearable(MM_EnvironmentBase*)+0xeab75328
    (0x0000000000000000)
    
    MM_MarkingDelegate::workerCompleteGC(MM_EnvironmentBase*)+0xea89
    5b08 (0x0000000000000000)
    
    MM_MarkingScheme::markLiveObjectsComplete(MM_EnvironmentBase*)+0
    xea8fd808 (0x0000000000000000)
    
    MM_ParallelMarkTask::run(MM_EnvironmentBase*)+0xea724418
    (0x0000000000000000)
    
    MM_ParallelDispatcher::workerEntryPoint(MM_EnvironmentBase*)+0xe
    a8d81d0 (0x0000000000000000)
    
    dispatcher_thread_proc2(OMRPortLibrary*,void*)+0xea8d8710
    (0x0000000000000000)
                             omrsig_protect+0xead07170
    (0x0000000000000000)
                             dispatcher_thread_proc+0xea8d8260
    (0x0000000000000000)
                             thread_wrapper+0xead9b0e8
    (0x0000000000000000)
    .
    Various crashes and assertion have been observed as a result of
    this issue.
    

Local fix

  • This issue can be worked around by disabling concurrent
    scavenger. Removing concurrent scavenger related options is
    sufficient (e.g -Xgc:concurrentScavenge) as concurrent scavenger
    is disabled by default.
    

Problem summary

  • Given specific thread scheduling conditions for concurrent
    scavenger tasks, GC can miss to flush thread local ownable
    synchronizer buffers to the global list when a concurrent
    scavenger cycle is completed as part of a global cycle.
    

Problem conclusion

  • The solution is to force flush all ownabale synchronizer buffers
    when we complete a concurrent scavenger cycle as part of a
    global cycle.
            https://github.com/eclipse/omr/pull/6633
    
    .
    This APAR will be fixed in the following Releases:
    .
    IBM SDK, Java Technology Edition
       8    SR7 FP16  (8.0.7.16)
    .
    Contact your IBM Product's Service Team for these Service
    Refreshes and Fix Packs.
    For those running stand-alone, information about the available
    maintenance can be found at:
               https://www.ibm.com/support/pages/java-sdk
    

Temporary fix

Comments

APAR Information

  • APAR number

    IJ41693

  • Reported component name

    J9 COMMON CODE

  • Reported component ID

    620700127

  • Reported release

    270

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2022-08-10

  • Closed date

    2022-08-19

  • Last modified date

    2022-08-19

  • 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":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSNVBF","label":"Runtimes for Java Technology"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
20 August 2022