RFR (XS): 8021823 G1: Concurrent marking crashes with -XX:ObjectAlignmentInBytes>=32 in 64bit VMs (patch for hs24+hs25)
Thomas Schatzl
thomas.schatzl at oracle.com
Wed Jul 31 17:05:40 UTC 2013
Hi,
On Wed, 2013-07-31 at 08:54 -0700, Vladimir Kozlov wrote:
> Thomas,
>
> There is LogMinObjAlignment. Why you did not use it?
did not recall it at that time it for some reason...
New Webrevs:
hs24: http://cr.openjdk.java.net/~tschatzl/8021823/webrev.1.hs24/
hs25: http://cr.openjdk.java.net/~tschatzl/8021823/webrev.1.hs25/
Fixed now, thanks,
Thomas
>
> Thanks,
> Vladimir
>
> On 7/31/13 5:48 AM, Thomas Schatzl wrote:
> > Hi all,
> >
> > can I have reviews for the following fix? The change addresses wrong
> > initialization of the mark bitmaps in G1 when ObjectAlignmentInBytes is
> > larger than or equal to 32.
> >
> > The concurrent marking uses a shift value for mapping heap address to
> > mark bitmap bits. This shift value has been calculated wrongly depending
> > on ObjectAlignment (=ObjectAlignmentInBytes in HeapWords), so that only
> > worked for ObjectAlignmentInBytes values <= 16 it has been correct.
> >
> > Instead of the correct value of "log2(ObjectAlignment)" the code used
> > "ObjectAlignment-1".
> >
> > I.e. some table will show the problem (64 bit VM with sizeof(HeapWord)
> > == 8):
> >
> > ObjectAlignment (OAInBytes) Old Shift value New Shift value
> > 8 (64) 7 3
> > 4 (32) 3 2
> > 2 (16) 1 1
> > 1 (8) 0 0
> >
> > I.e. when mapping HeapWords to bits, the code previously used a much too
> > high value for ObjectAlignmentInBytes, resulting in truncating important
> > bits from the heap address, resulting in wrong locations to look for and
> > set bits.
> >
> > Coincidently the old calculation resulted in the same values for
> > ObjectAlignmentInBytes<=16, so this issue went unnoticed.
> >
> > There is a new test that simply looks for these crashes for all
> > supported object alignments by running a few concurrent markings.
> >
> > JBS:
> > https://jbs.oracle.com/bugs/browse/JDK-8021823
> >
> > Bugs.sun:
> > http://bugs.sun.com/view_bug.do?bug_id=8021823
> >
> > Webrev:
> > hs24: http://cr.openjdk.java.net/~tschatzl/8021823/webrev.hs24/
> > hs25: http://cr.openjdk.java.net/~tschatzl/8021823/webrev.hs25/
> >
> > Testing:
> > manual testing of all failing tests with ObjectAlignmentInBytes from 8
> > to 256, test case failing without the patch, succeeding with the patch,
> > jprt.
> >
> > Testing:
> >
More information about the hotspot-gc-dev
mailing list