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