RFR: 8352091: GenShen: assert(!(request.generation->is_old() && _heap->old_generation()->is_doing_mixed_evacuations())) failed: Old heuristic should not request cycles while it waits for mixed evacuation

William Kemper wkemper at openjdk.org
Fri Mar 14 23:50:25 UTC 2025


Consider the following:
1. Regulator thread sees that control thread is `idle` and requests an old cycle
2. Regulator thread waits until control thread is not `idle`
3. Control thread starts old cycle and notifies the Regulator thread (as expected)
4. Regulator thread stays off CPU for a _long_ time
5. Control thread _completes_ old marking and returns to `idle` state
6. Regulator thread finally wakes up and sees that Control thread is _still_ idle
7. In fact, the control thread has completed old marking and the regulator thread should not request another cycle

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

Commit messages:
 - Fix ABA issue that could have regulator thread request unexpected old cycles

Changes: https://git.openjdk.org/jdk/pull/24069/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24069&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8352091
  Stats: 2 lines in 1 file changed: 1 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/24069.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24069/head:pull/24069

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


More information about the shenandoah-dev mailing list