8382635: G1: TAMSes overwritten by G1ConcurrentMark::fully_initialize() cause verification errors

Reviewed-by: iwalulya, ayang
This commit is contained in:
Thomas Schatzl 2026-04-27 09:01:42 +00:00
parent dffe9f48e7
commit 0ba115c49f
3 changed files with 6 additions and 2 deletions

View File

@ -524,7 +524,10 @@ void G1ConcurrentMark::fully_initialize() {
uint max_num_regions = _g1h->max_num_regions();
::new (_region_mark_stats) G1RegionMarkStats[max_num_regions]{};
::new (_top_at_mark_starts) Atomic<HeapWord*>[max_num_regions]{};
for (uint i = 0; i < max_num_regions; i++) {
::new (&_top_at_mark_starts[i]) Atomic<HeapWord*>(_g1h->bottom_addr_for_region(i));
}
// Contrary to TAMS, the default value of _top_at_rebuild_starts needs to be null.
::new (_top_at_rebuild_starts) Atomic<HeapWord*>[max_num_regions]{};
reset_at_marking_complete();

View File

@ -316,7 +316,7 @@
product(bool, G1VerifyHeapRegionCodeRoots, false, DIAGNOSTIC, \
"Verify the code root lists attached to each heap region.") \
\
develop(bool, G1VerifyBitmaps, false, \
product(bool, G1VerifyBitmaps, false, DIAGNOSTIC, \
"Verifies the consistency of the marking bitmaps") \
\
product(uintx, G1PeriodicGCInterval, 0, MANAGEABLE, \

View File

@ -166,6 +166,7 @@ public class TestVerifyGCType {
"-Xmx16m",
"-XX:ParallelGCThreads=1",
"-XX:G1HeapWastePercent=1",
"-XX:+G1VerifyBitmaps",
"-XX:+VerifyBeforeGC",
"-XX:+VerifyAfterGC",
"-XX:+VerifyDuringGC"});