[aarch64-port-dev ] RFR(S): 8248851: CMS: Missing memory fences between free chunk check and klass read
Yangfei (Felix)
felix.yang at huawei.com
Wed Jul 8 02:49:17 UTC 2020
Hi,
> -----Original Message-----
> From: Kim Barrett [mailto:kim.barrett at oracle.com]
> Sent: Tuesday, July 7, 2020 9:28 PM
> To: Yangfei (Felix) <felix.yang at huawei.com>
> Cc: Andrew Haley <aph at redhat.com>; jdk8u-dev at openjdk.java.net;
> hotspot-gc-dev at openjdk.java.net; aarch64-port-dev at openjdk.java.net
> Subject: Re: [aarch64-port-dev ] RFR(S): 8248851: CMS: Missing memory
> fences between free chunk check and klass read
>
Cut...
> >
> > Good suggestion.
> > I have prepared a new webrev with the line removed:
> > http://cr.openjdk.java.net/~fyang/8248851/webrev.01/
> > Does it look better?
> >
> > Thanks,
> > Felix
>
> This change seems needed, but is it sufficient? Seems like there should be a
> corresponding release/storestore/something for the correspnding writes; is
> it there? (I haven't looked at CMS for quite a while, so no longer sure where
> to look.)
Yes, I think it's there. As mention in my first mail, the logic in markNotFree:
void markNotFree() {
// Set _prev (klass) to null before (if) clearing the mark word below
_prev = NULL; <========== Write klass (= NULL)
#ifdef _LP64
if (UseCompressedOops) {
OrderAccess::storestore(); <========== StoreStore barrier
set_mark(markOopDesc::prototype()); <========== Write marking not free
}
#endif
assert(!is_free(), "Error");
}
> This issue seems to persist all the way until CMS removal in JDK 14.
Since CMS is deprecated from JDK9, I am not sure if it's appropriate to fix this issue for those JDK9+ versions.
> Also, there's the closely related JDK-8160369 (JDK 9), which doesn't appear to
> have been backported to JDK 8.
Yeah, we also noticed that and was looking into it to see the possibility of a 8u backport.
Thanks,
Felix
More information about the jdk8u-dev
mailing list