RFR: 8215773: applications/kitchensink/Kitchensink.java crash with "assert(ZAddress::is_marked(addr)) failed: Should be marked"

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Fri Jan 4 12:46:48 UTC 2019



On 1/4/19 7:37 AM, coleen.phillimore at oracle.com wrote:
>
> Hi Erik,  This is kind of creepy.  They use the dead mirror and call 
> identity hash on it, which writes to the dead mirror.
>
> Are these functions called at a safepoint?  Maybe JFR could do 
> something different here.
>
> Coleen
>
>
> On 1/4/19 5:10 AM, Erik Österlund wrote:
>> Hi,
>>
>> During SystemDictionary::do_unloading(), JFR pokes around at the dead 
>> mirror oops that died due to class unloading.
>> The mirror is loaded without AS_NO_KEEPALIVE, which makes ZGC load 
>> barriers a bit sad, because they dislike loading dead oops.
>>
>> The solution is to load these mirrors with AS_NO_KEEPALIVE 
>> decorators, indicating that it is okay for them to be dead as we are 
>> only peeking at them. This is fine to do during concurrent execution 
>> by the GC thread that is performing class unloading, and hence 
>> controls the GC cycle, making sure that the memory of the dead oops 
>> is not reclaimed until the accesses have safely finished.
>>
>> Bug:
>> https://bugs.openjdk.java.net/browse/JDK-8215773
>>
>> Webrev:
>> http://cr.openjdk.java.net/~eosterlund/8215773/webrev.00/
>>
>> Manually ran kitchensink 24 hours to make sure this doesn't happen 
>> again. And hs-tier1-6 on linux.
>>
>> Thanks,
>> /Erik
>



More information about the hotspot-runtime-dev mailing list