8205472: Deadlock in Kitchensink when trying to print compile queues causing timeout
authorthartmann
Tue, 10 Jul 2018 15:33:55 +0200
changeset 51026 510ac4c08610
parent 51025 e4ca45413ddd
child 51027 01316e7ac1d1
8205472: Deadlock in Kitchensink when trying to print compile queues causing timeout Summary: Do not acquire the MethodCompileQueue_lock in CompileBroker::print_compile_queues(). Reviewed-by: kvn, kbarrett, dholmes
src/hotspot/share/compiler/compileBroker.cpp
src/hotspot/share/runtime/thread.cpp
--- a/src/hotspot/share/compiler/compileBroker.cpp	Tue Jul 10 15:09:34 2018 +0200
+++ b/src/hotspot/share/compiler/compileBroker.cpp	Tue Jul 10 15:33:55 2018 +0200
@@ -530,7 +530,6 @@
 
 void CompileBroker::print_compile_queues(outputStream* st) {
   st->print_cr("Current compiles: ");
-  MutexLocker locker(MethodCompileQueue_lock);
 
   char buf[2000];
   int buflen = sizeof(buf);
@@ -546,7 +545,7 @@
 }
 
 void CompileQueue::print(outputStream* st) {
-  assert(MethodCompileQueue_lock->owned_by_self(), "must own lock");
+  assert_locked_or_safepoint(MethodCompileQueue_lock);
   st->print_cr("%s:", name());
   CompileTask* task = _first;
   if (task == NULL) {
--- a/src/hotspot/share/runtime/thread.cpp	Tue Jul 10 15:09:34 2018 +0200
+++ b/src/hotspot/share/runtime/thread.cpp	Tue Jul 10 15:33:55 2018 +0200
@@ -963,7 +963,7 @@
 
 // The flag: potential_vm_operation notifies if this particular safepoint state could potentially
 // invoke the vm-thread (e.g., an oop allocation). In that case, we also have to make sure that
-// no threads which allow_vm_block's are held
+// no locks which allow_vm_block's are held
 void Thread::check_for_valid_safepoint_state(bool potential_vm_operation) {
   // Check if current thread is allowed to block at a safepoint
   if (!(_allow_safepoint_count == 0)) {