JDK-8166898 : G1SATBCardTableLoggingModRefBS::invalidate() incorrect with whole_heap == true
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2016-09-29
  • Updated: 2016-12-22
  • Resolved: 2016-11-24
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.
JDK 9
9 b150Fixed
Related Reports
Relates :  
Description
The code path for G1SATBCardTableLoggingModRefBS::invalidate() with whole_heap = true is incorrect.

While it dirties the cards, it does not enqueue them, leading to missing remembered set entries.

Fortunately there is no caller in G1 code with whole_heap set to true.
Comments
I implemented fix: http://cr.openjdk.java.net/~lmesnik/8166898/webrev.00/
22-11-2016

Invalidate() with these parameters is part of the CardTable/Barrierset interface afaik. If removing is a possible option, then do it.
01-10-2016

Why not just remove the parameter, rather than failing with the bad value?
01-10-2016

My recommendation is to simply fail if the method is called with whole_heap=true. There is no reason to call this method with that parameter set to that value at all.
29-09-2016