G1ScanObjsDuringUpdateRSClosure::do_oop_work() uses add_reference() to update remembered set entries of newly copied objects in other regions.
G1 must not do this: the HRRS implementation might modify remembered sets of random other HRRSes when coarsening from fine to coarse. Since other threads might be iterating over a victim HRRS at the same time, we might miss iterating over some remembered set entries of that modified HRRS.
The HRRSIterator is _not_ concurrent modification safe.
There is no particular crash in current code that could be attributed to this issue but it is theoretically possible that remembered set entries can be missed because of that even in current code.
G1 must not do this: the HRRS implementation might modify remembered sets of random other HRRSes when coarsening from fine to coarse. Since other threads might be iterating over a victim HRRS at the same time, we might miss iterating over some remembered set entries of that modified HRRS.
The HRRSIterator is _not_ concurrent modification safe.
There is no particular crash in current code that could be attributed to this issue but it is theoretically possible that remembered set entries can be missed because of that even in current code.
- blocks
-
JDK-8071913 Filter out entries to free/uncommitted regions during iteration
- Resolved