diff -r 5c679ec60888 -r e256b3b62e20 src/hotspot/share/runtime/vmThread.cpp --- a/src/hotspot/share/runtime/vmThread.cpp Fri Nov 02 08:33:59 2018 +0100 +++ b/src/hotspot/share/runtime/vmThread.cpp Fri Nov 02 14:13:05 2018 +0100 @@ -319,7 +319,9 @@ // Notify the VMThread that the last non-daemon JavaThread has terminated, // and wait until operation is performed. void VMThread::wait_for_vm_thread_exit() { - { MutexLocker mu(VMOperationQueue_lock); + assert(Thread::current()->is_Java_thread(), "Should be a JavaThread"); + assert(((JavaThread*)Thread::current())->is_terminated(), "Should be terminated"); + { MutexLockerEx mu(VMOperationQueue_lock, Mutex::_no_safepoint_check_flag); _should_terminate = true; VMOperationQueue_lock->notify(); }