RFR (XS): 8054808: Bitmap verification sometimes fails after Full GC aborts concurrent mark

Jon Masamitsu jon.masamitsu at oracle.com
Wed Aug 27 15:00:04 UTC 2014


Thomas,

Would it work to snapshot the value for end()

end =r-> end()

and use that instead of calculating "end" from
r->bottom()?

Jon

On 8/27/2014 6:24 AM, Thomas Schatzl wrote:
> Hi all,
>
>    can I have reviews for the following fix that fixes next bitmap
> verification after a full gc aborted concurrent mark?
>
> The original code to verify whether a region's next bitmap contained a
> mark or not was racy: in CheckBitmapClearHRClosure::doHeapRegion the
> result whether the bitmap had marks was:
>
>      return _bitmap->getNextMarkedWordAddress(r->bottom(), r->end()) !=
> r->end();
>
> The problem is that concurrent humongous object allocation changes
> HeapRegion::_end, and if that occurs between the initial evaluation for
> the method call and the comparison, the checking will fail.
>
> CR:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8054808
> Webrev:
> http://cr.openjdk.java.net/~tschatzl/8054808/webrev/
> Testing:
> Inspecting generated code, test case in the CR, jprt
>
> Thanks,
>    Thomas
>
>



More information about the hotspot-gc-dev mailing list