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