VOOZH about

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

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


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

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