Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix missing concurrent continuation scanning issue #16614

Merged
merged 1 commit into from
Feb 4, 2023

Commits on Feb 3, 2023

  1. Fix missing concurrent continuation scanning issue

    The issue is caused by concurrent scavenger scanning and concurrent
    marking scanning overlap for the same continuation Object, during
    concurrent continuation scanning, the current synchronization control
    would block the continuation mounting and ignore another concurrent
    scanning, but the concurrent scavenger scanning and concurrent marking
    are irrelevant, ignore another could cause missing scanning and the
    related "live" object is recycled.
    
    - updated J9VMContinuation->state, use two low bits for recording
     concurrentScanning(bit0 for concurrentScanningLocal and bit1 for
     concurrentScanningGlobal) instead of only one low bit.
    
    - pass flag isConcurrentGC and flag isGlobalGC for
    GC_VMThreadStackSlotIterator::scanSlots().
    
    - handle J9_GC_CONTINUATION_STATE_CONCURRENT_SCAN_LOCAL and
    J9_GC_CONTINUATION_STATE_CONCURRENT_SCAN_GLOBAL independently
    
    - only both J9_GC_CONTINUATION_STATE_CONCURRENT_SCAN_LOCAL and
    J9_GC_CONTINUATION_STATE_CONCURRENT_SCAN_GLOBAL bits has been cleared
    we can notify blocked the continuation mounting thread.
    
    Signed-off-by: Lin Hu <linhu@ca.ibm.com>
    LinHu2016 committed Feb 3, 2023
    Configuration menu
    Copy the full SHA
    13ebc10 View commit details
    Browse the repository at this point in the history