RFR: Do not abort coalesce and fill during fullgc

Kelvin Nilsen kdnilsen at openjdk.java.net
Mon Mar 21 20:19:11 UTC 2022


We found that the GC cancellation flag that in some cases causes degenerated GC to upgrade to full GC remains set throughout the full GC effort.  In fact, some of the code within full GC checks this flag to determine if it was upgraded from degenerated GC.  We also discovered that when the cancellation flag is set, the coalesce-and-fill effort that is required for pinned regions does not run to completion.  This results in crashes during subsequent remembered set scans.

This fix uses a new service (ShenandoahHeapRegion::oop_fill_and_coalesce_wo_cancel()) to process pinned regions.  This service always runs to completion, ignoring the status of the GC cancellation flag.

-------------

Commit messages:
 - Fix spelling error in comment
 - Do not clear cancel gc flag at start of full collection
 - Ignore cancellation requests during coalesce and fill of pinned
 - Merge branch 'shenandoah' of ssh://git.amazon.com/pkg/OpenJDKTipSrc into clear_cancel_b4_full
 - Merge upstream into shenandoah
 - Clear cancel at start of FullGC
 - Revert "Mutator may fail to evacuate"

Changes: https://git.openjdk.java.net/shenandoah/pull/126/files
 Webrev: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=126&range=00
  Stats: 46 lines in 3 files changed: 45 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/shenandoah/pull/126.diff
  Fetch: git fetch https://git.openjdk.java.net/shenandoah pull/126/head:pull/126

PR: https://git.openjdk.java.net/shenandoah/pull/126


More information about the shenandoah-dev mailing list