--- 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();
}