RFR: 8329528: G1 does not update TAMS correctly when dropping retained regions during Concurrent Start pause

Thomas Schatzl tschatzl at openjdk.org
Wed Apr 10 10:50:23 UTC 2024


Hi all,

  please review this change to fix the problem that when g1 ages out regions from the retained region collection set candidate list during a concurrent start gc, the `TAMS`es of these regions are not set correctly.

The change achieves this by changing the order of some calculations in `G1YoungCollector::pre_evacuate_collection_set`: instead of setting `TAMS`es before collection set calculation, do it later, adjusting the predicate determining whether to update the `TAMS`es at concurrent start pause start to exclude regions in the collection set.

Several attempts for different fixes were tried, one of them is still viewable by only considering the changesets before the "alternate implementation" commit. However they quickly grew to fairly large size and complicated the code a lot.

Testing: tier1-3, test case not failing any more

Thanks,
  Thomas

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

Commit messages:
 - more cleanup
 - remove junk
 - test case
 - alternate implementation
 - final changes to fix tests, trying another approach now
 - actual fix....
 - first prototype, some pinned obj test parsing log messages failing

Changes: https://git.openjdk.org/jdk/pull/18692/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18692&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8329528
  Stats: 85 lines in 4 files changed: 77 ins; 5 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/18692.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/18692/head:pull/18692

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


More information about the hotspot-gc-dev mailing list