Commit 95bfde3d authored by thek@adventure.(none)'s avatar thek@adventure.(none)
Browse files

Bug #32436 KILL QUERY completely deadlocks mysqld

Sending several "KILL QUERY" statements to target a connection running
"SELECT SLEEP" could freeze the server.

The locking order in Item_func_sleep was wrong and this could lead to a
dead lock.

This patch solves the issue by resolving the locking order properly.
parent 1794242b
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -3732,13 +3732,12 @@ longlong Item_func_sleep::val_int()
      break;
    error= 0;
  }

  pthread_mutex_unlock(&LOCK_user_locks);
  pthread_mutex_lock(&thd->mysys_var->mutex);
  thd->mysys_var->current_mutex= 0;
  thd->mysys_var->current_cond=  0;
  pthread_mutex_unlock(&thd->mysys_var->mutex);

  pthread_mutex_unlock(&LOCK_user_locks);
  pthread_cond_destroy(&cond);

  return test(!error); 		// Return 1 killed