RFR: 8215773: applications/kitchensink/Kitchensink.java crash with "assert(ZAddress::is_marked(addr)) failed: Should be marked"
Erik Österlund
erik.osterlund at oracle.com
Fri Jan 4 10:10:03 UTC 2019
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