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

William Kemper wkemper at openjdk.org
Wed Feb 5 22:35:21 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).

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

Commit messages:
 - Merge remote-tracking branch 'jdk/master' into fix-control-regulator-threads
 - Simplify shControlThread
 - Revert unnecessary changes
 - Fix interrupted old cycle handling
 - Restore reporting allocations to pacer
 - Better names, better comments
 - WIP: Simplify shutdown protocol
 - WIP: Don't need request.mode anymore
 - WIP: Simplify degenerated cycle handling
 - WIP: Passes tier1, mostly passes tier2
 - ... and 4 more: https://git.openjdk.org/jdk/compare/b499c827...f97f257b

Changes: https://git.openjdk.org/jdk/pull/23475/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23475&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8349094
  Stats: 817 lines in 14 files changed: 241 ins; 286 del; 290 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