RFR: Reset concurrent-partial-in-progress flag on cancellation
Roman Kennke
rkennke at redhat.com
Mon Oct 9 22:25:46 UTC 2017
Am 10.10.2017 um 00:16 schrieb Aleksey Shipilev:
> 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
>
Ok
More information about the shenandoah-dev
mailing list