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