JDK-8156926 : Card live data for reused old region is wrong
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P2
  • Status: Resolved
  • Resolution: Not an Issue
  • Submitted: 2016-05-13
  • Updated: 2016-06-13
  • Resolved: 2016-06-13
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Related Reports
Relates :  
When reusing an old region for allocation during gc, we update its gc time stamp.

If concurrent card live data generation occurs for that region at that time, the following finalization will reset its card live data incorrectly.

The following scrubbing will cause missed remembered set entries.
The problem is (see below for further comments) that reusing an old region for reclamation causes that region's time stamp to be updated. This results in the region to be considered "reclaimed", and its card live data is cleared from NTAMS to top(). However this is no problem for the *current* code, as that information will simply be regenerated. That's why the failing test (can be reproduced e.g. with gcbasher) does not fail with current code. It is a problem for when JDK-8156926 is implement. Since JDK-8156926 is not part of JDK9, I will roll this change into the other change, and close this issue as "not an issue".

This bug has been introduced by JDK-8153170.