< prev index next >

src/hotspot/share/runtime/thread.cpp

Print this page
rev 47819 : imported patch 10.07.open.rebase_20171110.dcubed
rev 47820 : imported patch 10.08.open.rebase_20171114.rehn
rev 47821 : imported patch 10.09.open.TLH_hang_fix.rehn

@@ -2021,15 +2021,10 @@
     _timer_exit_phase4.start();
   }
   // Remove from list of active threads list, and notify VM thread if we are the last non-daemon thread
   Threads::remove(this);
 
-  // If someone set a handshake on us just as we entered exit path, we simple cancel it.
-  if (ThreadLocalHandshakes) {
-    cancel_handshake();
-  }
-
   if (log_is_enabled(Debug, os, thread, timer)) {
     _timer_exit_phase4.stop();
     ResourceMark rm(this);
     log_debug(os, thread, timer)("name='%s'"
                                  ", exit-phase1=" JLONG_FORMAT

@@ -4828,10 +4823,15 @@
     Threads::clear_smr_delete_notify();
     Threads::smr_delete_lock()->unlock();
     // Retry the whole scenario.
   }
 
+  // If someone set a handshake on us just as we entered exit path, we simple cancel it.
+  if (ThreadLocalHandshakes) {
+    thread->cancel_handshake();
+  }
+
   delete thread;
   if (EnableThreadSMRStatistics) {
     timer.stop();
     jint millis = (jint)timer.milliseconds();
     Threads::inc_smr_deleted_thread_cnt();
< prev index next >