RFR: Make sure debug builds fail predictably on safepoint timeout

Aleksey Shipilev shade at redhat.com
Mon Oct 1 18:26:53 UTC 2018


In sh/jdk8, we have a very intermittent deadlock on VM shutdown in stress tests. gdb session says it
is caused by safepoint synchronization never completing. Let's make sure we are failing reliably
when that happens:

diff -r cb6ddc702b08 src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp   Mon Oct 01 19:11:33 2018 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp   Mon Oct 01 20:23:11 2018 +0200
@@ -192,6 +192,16 @@
     FLAG_SET_DEFAULT(NodeLimitFudgeFactor, NodeLimitFudgeFactor * 3);
   }
 #endif
+
+  // Make sure safepoint deadlocks are failing predictably. This sets up VM to report
+  // fatal error after 10 seconds of wait for safepoint syncronization (not the VM
+  // operation itself). There is no good reason why Shenandoah would spend that
+  // much time synchronizing.
+#ifdef ASSERT
+  FLAG_SET_DEFAULT(SafepointTimeout, true);
+  FLAG_SET_DEFAULT(SafepointTimeoutDelay, 10000);
+  FLAG_SET_DEFAULT(DieOnSafepointTimeout, true);
+#endif
 }

 size_t ShenandoahArguments::conservative_max_heap_alignment() {

Testing: tier3_gc_shenandoah

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list