[16] RFR 8251910: Shenandoah: assert(external_guard || result != __null) failed: Invalid JNI handle
Zhengyu Gu
zgu at redhat.com
Tue Aug 18 15:18:49 UTC 2020
Some of concurrent flags, e.g. concurrent_weak/strong_roots, are unset
concurrently, they are harmless until mark bitmap is reset, concurrently.
In normal cycles, there are GC safepoints, e.g. init/final_updateref,
between unset concurrent flags and reset mark bitmap, and those
safepoints ensure the changes are made visible to all threads.
However, in rare cases, there are nothing to evacuate and no references
need to be updated, so that, update reference GC safepoints are skipped.
Under this circumstance, Shenandoah will have to perform thread
handshake to ensure the changes are visible before mark bitmap can be reset.
Bug: https://bugs.openjdk.java.net/browse/JDK-8251910
Webrev: http://cr.openjdk.java.net/~zgu/JDK-8251910/webrev.00/
Test:
hotspot_gc_shenandoah
Thanks,
-Zhengyu
More information about the shenandoah-dev
mailing list