RFR (XS/T) 8232176: Shenandoah: new assert in ShenandoahEvacuationTask is too strong

Aleksey Shipilev shade at redhat.com
Fri Oct 11 18:36:02 UTC 2019


Recent regression:
  https://bugs.openjdk.java.net/browse/JDK-8232176

JDK-8231947 added the assert in ShenandoahEvacuationTask that is too strong. There is a corner case
when the region is collection-set-pinned (CSP), and the oom-evac-protocol waits for GC thread to
complete the evacuation. There is a short window where GC thread can see the CSP region before
seeing cancellation request.

It seems easier to remove the too strong assert for now. is_conc_move_allowed() == true is a lie
right now. We can add cancelled_gc() check inside of it, but that would only be safe if we know that
caller holds oom-evac-scope.

The assertion failure reliably reproduces with -XX:ShenandoahGCHeuristics=aggressive
-XX:+ShenandoahOOMDuringEvacALot on SPECjvm2008.

Fix:
  https://cr.openjdk.java.net/~shade/8232176/webrev.01/

Testing: broken tests

-- 
Thanks,
-Aleksey




More information about the hotspot-gc-dev mailing list