Integrated: 8306334: Handle preemption of old cycle between filling and bootstrap phases

William Kemper wkemper at openjdk.org
Mon Apr 24 17:40:25 UTC 2023


On Thu, 20 Apr 2023 16:02:50 GMT, William Kemper <wkemper at openjdk.org> wrote:

> 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.

This pull request has now been integrated.

Changeset: 64d14f3b
Author:    William Kemper <wkemper at openjdk.org>
URL:       https://git.openjdk.org/shenandoah/commit/64d14f3bc64c47b226876ad9865c6988c31bea7b
Stats:     32 lines in 4 files changed: 25 ins; 5 del; 2 mod

8306334: Handle preemption of old cycle between filling and bootstrap phases

Reviewed-by: kdnilsen

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

PR: https://git.openjdk.org/shenandoah/pull/262


More information about the shenandoah-dev mailing list