RFR: Generic verification is possible only at Shenandoah safepoints

Aleksey Shipilev shade at redhat.com
Wed Nov 29 12:35:48 UTC 2017


After recent assert change, Verifier now check if it is at Shenandoah safepoint. There is one path
where Verifier can be called outside of Shenandoah safepoint, and that is Generic heap verification.
 Prevent that from happening:

diff -r 46091fe1a0bc src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp	Mon Nov 27 18:42:57 2017 +0100
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp	Wed Nov 29 13:33:05 2017 +0100
@@ -1356,7 +1356,7 @@
 }

 void ShenandoahHeap::verify(VerifyOption vo) {
-  if (SafepointSynchronize::is_at_safepoint() || ! UseTLAB) {
+  if (ShenandoahSafepoint::is_at_shenandoah_safepoint() || ! UseTLAB) {
     if (ShenandoahVerify) {
       verifier()->verify_generic(vo);
     } else {

This fixes intermittent assertion failure on VM shutdown.

Testing: hotspot_gc_shenandoah

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list