RFR: Reset concurrent-partial-in-progress flag on cancellation
Aleksey Shipilev
shade at redhat.com
Mon Oct 9 22:16:07 UTC 2017
http://cr.openjdk.java.net/~shade/shenandoah/concpartial-cancellation-flag/webrev.01/
This triggers in tests:
# assert(!sh->is_concurrent_partial_in_progress()) failed: cannot process weakrefs during
conc-partial yet
This seems to happen because the cancellation path leaves the flag on, and then regular concurrent
cycle tries to process the references and fails on our new assert. The trouble with dropping that
flag is that we cannot do it concurrently, but only at safepoint. And next safepoint may never
happen, because we also stuck in OOM-during-evac. So, we want to drop the flag at safepoints. On
cancellation path, that means in Full GC. We drop the evac_in_progress early to unblock the threads.
Dropping the flag on cancel during init partial makes the whole thing less likely.
Testing: hotspot_gc_shenandoah (+ failing tests)
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list