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:37:26 UTC 2019


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