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