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

sangheon sangheon.kim at oracle.com
Mon Sep 12 17:11:03 UTC 2016

Hi Thomas,

On 09/12/2016 12:17 AM, Thomas Schatzl wrote:
> 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.
Thank you for the update.

The patch looks good, thanks for fixing this.
The copyright of heapRegionManager.cpp can be updated if you care about it.


> Thanks,
>    Thomas

More information about the hotspot-gc-dev mailing list