RFR: Handle preemption of old cycle between filling and bootstrap phases
William Kemper
wkemper at openjdk.org
Thu Apr 20 16:10:31 UTC 2023
In the case when a request to run a young cycle arrives _after_ making the old generation parseable but _before_ disallowing preemption, the preemption request would cause the young bootstrap cycle to be preempted (not cancelled). This is not expected and would result in the old marking phase beginning with stale oops in the young mark queues after the mark bitmaps were cleared. This ultimately triggers assertions that such objects should be marked.
With this change if we detect a cancellation between filling and bootstrapping we make a distinction between:
* A cancellation due to allocation failure. In this case the old cycle is interrupted to run a degenerated cycle.
* A cancellation due to a young cycle request. In this case, the old cycle is allowed to continue with the boostrap cycle, which is itself a concurrent young cycle.
-------------
Commit messages:
- Merge branch 'shenandoah-master' into cancellation-fix
- Handle preemption between filling and bootstrap phases
Changes: https://git.openjdk.org/shenandoah/pull/262/files
Webrev: https://webrevs.openjdk.org/?repo=shenandoah&pr=262&range=00
Stats: 25 lines in 2 files changed: 22 ins; 2 del; 1 mod
Patch: https://git.openjdk.org/shenandoah/pull/262.diff
Fetch: git fetch https://git.openjdk.org/shenandoah.git pull/262/head:pull/262
PR: https://git.openjdk.org/shenandoah/pull/262
More information about the shenandoah-dev
mailing list