diff -r 046e4024e55a -r 76ae9aa0e794 src/hotspot/share/runtime/objectMonitor.cpp --- a/src/hotspot/share/runtime/objectMonitor.cpp Fri Nov 15 09:06:58 2019 +0800 +++ b/src/hotspot/share/runtime/objectMonitor.cpp Thu Nov 14 22:36:40 2019 -0500 @@ -1267,6 +1267,10 @@ int ret = OS_OK; int WasNotified = 0; + + // Need to check interrupt state whilst still _thread_in_vm + bool interrupted = interruptible && jt->is_interrupted(false); + { // State transition wrappers OSThread* osthread = Self->osthread(); OSThreadWaitState osts(osthread, true); @@ -1275,7 +1279,7 @@ // Thread is in thread_blocked state and oop access is unsafe. jt->set_suspend_equivalent(); - if (interruptible && (jt->is_interrupted(false) || HAS_PENDING_EXCEPTION)) { + if (interrupted || HAS_PENDING_EXCEPTION) { // Intentionally empty } else if (node._notified == 0) { if (millis <= 0) {