RFR (XS): 8164948: Initializing stores of HeapRegions are not ordered with regards to its use in G1ConcurrentMark

Thomas Schatzl thomas.schatzl at oracle.com
Mon Sep 12 07:17:09 UTC 2016


Hi all,

On Fri, 2016-09-09 at 06:01 -0700, Thomas Schatzl wrote:
> Hi all,
> 
>  StefanJ had an initial look and commented about the removal of the
> reinitialization of the HeapRegion in heapRegion.cpp, i.e. that this
> is
> still necessary.
> 
> He is right, I updated the webrev at
> http://cr.openjdk.java.net/~tschatzl/8164948/webrev.1 (full)
> http://cr.openjdk.java.net/~tschatzl/8164948/webrev.0_to_1 (diff)
> 
> Analysis of the new version shows that this will not cause any
> additional issues: the effect is that (like before the previous
> webrev, and before finding this issue), the marking thread will just
> scan the next bitmap occupied by the region unnecessarily (it will
> not find any mark, this is correct because that region has been
> allocated after mark start, and those are always(tm) kept live).
> 
> This is true because G1 only uncommits the region and the associated
> auxiliary data at full gc, which will cancel all marking.
> 
> I.e. the original problem had been that since we got a TAMS value for
> the region that was outside the region, we scanned into non-committed
> areas.
> 
> I will do some more testing with a new build though.

  ~3200 successful runs of the test later, still no problem with the
change.

Thanks,
  Thomas




More information about the hotspot-gc-dev mailing list