changeset 51026:510ac4c08610

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
author thartmann
date Tue, 10 Jul 2018 15:33:55 +0200
parents e4ca45413ddd
children 01316e7ac1d1
files src/hotspot/share/compiler/compileBroker.cpp src/hotspot/share/runtime/thread.cpp
diffstat 2 files changed, 2 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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)) {