RFR (S) 8215575: C2 crash: assert(get_instanceKlass()->is_loaded()) failed: must be at least loaded

Erik Österlund erik.osterlund at oracle.com
Tue Jan 8 11:59:26 UTC 2019


Hi David,

The required synchronization is that the _subklass link is read/written 
with at least acquire/release semantics, correspondingly. And now they 
are. (when appending, the link gets written with a conservative CAS, and 
the link is loaded with load_acquire).

Thanks,
/Erik

On 2019-01-08 02:49, David Holmes wrote:
> Hi Coleen,
>
> On 8/01/2019 5:50 am, coleen.phillimore at oracle.com wrote:
>> Summary: Set InstanceKlass::loaded before adding classes to the 
>> subklass list, which can be read concurrently by the compiler.
>
> I think you need a storestore barrier to ensure the new order is 
> preserved.
>
> Cheers,
> David
>
>> Thanks to Erik for the diagnosis and suggested fix.  See bug comments 
>> for more details.
>>
>> Tested with hs-tier1-3, 6 and 8.
>>
>> open webrev at http://cr.openjdk.java.net/~coleenp/8215575.01/webrev
>> bug link https://bugs.openjdk.java.net/browse/JDK-8215575
>>
>> Thanks,
>> Coleen



More information about the hotspot-dev mailing list