diff --git a/sql/sql_class.h b/sql/sql_class.h
index e045c70517e0918f6f457932d14dbe6e868827a1..df246b423377d4b28912e96070c0a26597d42931 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -535,11 +535,19 @@ class THD :public ilink
   void close_active_vio();
 #endif  
   void awake(bool prepare_to_die);
+  /*
+    For enter_cond() / exit_cond() to work the mutex must be got before
+    enter_cond() but released before exit_cond() (in 4.1, assertions will soon
+    ensure this). Use must be:
+    lock mutex; enter_cond(); ...; unlock mutex; exit_cond().
+    If you don't do it this way, you will get a deadlock if another thread is
+    doing a THD::awake() on you.
+    
+  */
   inline const char* enter_cond(pthread_cond_t *cond, pthread_mutex_t* mutex,
 			  const char* msg)
   {
     const char* old_msg = proc_info;
-    safe_mutex_assert_owner(mutex);
     mysys_var->current_mutex = mutex;
     mysys_var->current_cond = cond;
     proc_info = msg;