List:Commits« Previous MessageNext Message »
From:Davi Arnaut Date:May 8 2008 1:06am
Subject:bk commit into 5.0 tree (davi:1.2623) BUG#36579
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of davi.  When davi does a push these changes
will be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2008-05-07 20:06:34-03:00, davi@stripped +1 -0
  Bug#36579 Dumping information about locks in use may lead to a server crash
  
  Dumping information about locks in use by sending a SIGHUP signal
  to the server or by invoking the "mysqladmin debug" command may
  lead to a server crash in debug builds or to undefined behavior in
  production builds.
  
  The problem was that a mutex that protects a lock object (THR_LOCK)
  might have been destroyed before the lock object was actually removed
  from the list of locks in use, causing a race condition with other
  threads iterating over the list. The solution is to destroy the mutex
  only after removing lock object from the list.

  mysys/thr_lock.c@stripped, 2008-05-07 20:06:30-03:00, davi@stripped +1 -1
    Destroy the mutex that protects the lock object only after removing
    the lock object from the list of locks in use.

diff -Nrup a/mysys/thr_lock.c b/mysys/thr_lock.c
--- a/mysys/thr_lock.c	2007-08-05 06:16:59 -03:00
+++ b/mysys/thr_lock.c	2008-05-07 20:06:30 -03:00
@@ -333,10 +333,10 @@ void thr_lock_init(THR_LOCK *lock)
 void thr_lock_delete(THR_LOCK *lock)
 {
   DBUG_ENTER("thr_lock_delete");
-  VOID(pthread_mutex_destroy(&lock->mutex));
   pthread_mutex_lock(&THR_LOCK_lock);
   thr_lock_thread_list=list_delete(thr_lock_thread_list,&lock->list);
   pthread_mutex_unlock(&THR_LOCK_lock);
+  VOID(pthread_mutex_destroy(&lock->mutex));
   DBUG_VOID_RETURN;
 }
 
Thread
bk commit into 5.0 tree (davi:1.2623) BUG#36579Davi Arnaut8 May 2008