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#36579 | Davi Arnaut | 8 May 2008 |