Integrated: 8349094: GenShen: Race between control and regulator threads may violate assertions

William Kemper wkemper at openjdk.org
Tue Mar 4 00:44:58 UTC 2025


On Wed, 5 Feb 2025 22:30:35 GMT, William Kemper <wkemper at openjdk.org> wrote:

> There are several changes to the operation of Shenandoah's control threads here.
> * The reason for cancellation is now recorded in `ShenandoahHeap::_cancelled_gc` as a `GCCause`, instead of various member variables in the control thread.
>   *  The cancellation handling is driven entirely by the cancellation cause
>   * The graceful shutdown, alloc failure, humongous alloc failure and preemption requested flags are all removed
>   * The shutdown sequence is simpler
> * The generational control thread uses a lock to coordinate updates to the requested cause and generation
>   * APIs have been simplified to avoid converting between the generation `type` and the actual generation instance
>   * The old heuristic, rather than the control thread itself, is now responsible for resuming old generation cycles
>   *  The control thread doesn't loop on its own (unless the pacer is enabled).
> 
> ## Testing
> * jtreg hotspot_gc_shenandoah
> * dacapo, extremem, diluvian, specjbb2015, specjvm2018, heapothesys

This pull request has now been integrated.

Changeset: 3a8a432c
Author:    William Kemper <wkemper at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/3a8a432c05999fe478b94de75b416404b5a515d2
Stats:     963 lines in 18 files changed: 327 ins; 294 del; 342 mod

8349094: GenShen: Race between control and regulator threads may violate assertions

Reviewed-by: ysr, kdnilsen

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

PR: https://git.openjdk.org/jdk/pull/23475


More information about the shenandoah-dev mailing list