RFR: JDK-8148992: VM can hang on exit if root region scanning is initiated but not executed
thomas.schatzl at oracle.com
Wed Feb 10 10:10:32 UTC 2016
On Wed, 2016-02-10 at 10:02 +0100, Bengt Rutisson wrote:
> Hi Jesper (and everyone),
> On 2016-02-08 15:50, Jesper Wilhelmsson wrote:
> > Looks good!
> Thanks for looking at this!
> I found a bug in the last webrev. The
> G1ConcurrentMark::scanRootRegions() has the side effect that it
> calls ClassLoaderDataGraph::clear_claimed_marks(). It is not ok to
> skip this call just because there are no root regions to scan. So, I
> can't guard the call to scanRootRegions() with "if
> (_cm->root_regions()->scan_in_progress())" as I did in webrev.02.
> I find this side effect a bit odd. So, I moved
> ClassLoaderDataGraph::clear_claimed_marks() out to its own phase.
> This will also make it show up clearer in our logs if it starts
> taking a long time.
I think this is a good idea.
> Instead of checking scan_in_progress() both before the call to
> scanRootRegions() and inside of it I moved the assert(!has_aborted())
> in to scanRootRegions().
> Here's an updated webrev:
> And here's a diff compared to the last version:
One nit: the change in heapVerifier.cpp seems to be something
completely unrelated. Do you think it would be a good idea to move it
to some extra CR?
Would not need a re-review for this.
More information about the hotspot-gc-dev