RFR: 8349094: GenShen: Race between control and regulator threads may violate assertions [v10]
William Kemper
wkemper at openjdk.org
Thu Feb 13 16:59:08 UTC 2025
> 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).
William Kemper has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 28 additional commits since the last revision:
- Merge remote-tracking branch 'jdk/master' into fix-control-regulator-threads
- Improve message for assertion
- Make shutdown safer for threads requesting (or expecting) gc
- Do not accept requests if control thread is terminating
- Notify waiters when control thread terminates
- Add event for control thread state changes
- Fix shutdown livelock error
- Fix includes
- Simplify locking protocol
- Make shutdown more robust, make better use of request lock
- ... and 18 more: https://git.openjdk.org/jdk/compare/06ea83a4...51d09207
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/23475/files
- new: https://git.openjdk.org/jdk/pull/23475/files/779492c6..51d09207
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=23475&range=09
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=23475&range=08-09
Stats: 12604 lines in 600 files changed: 8568 ins; 1551 del; 2485 mod
Patch: https://git.openjdk.org/jdk/pull/23475.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/23475/head:pull/23475
PR: https://git.openjdk.org/jdk/pull/23475
More information about the hotspot-gc-dev
mailing list