MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Vladislav Vaintroub Date:January 30 2009 1:13pm
Subject:bzr commit into mysql-6.0-falcon-team branch (vvaintroub:2990)
Bug#42475
View as plain text  
#At file:///G:/bzr/mysql-6.0-falcon-team/ based on revid:vvaintroub@stripped

 2990 Vladislav Vaintroub	2009-01-30
      Bug#42475 crash in Sync::findLocks.
      Falcon would sporadically crash in high concurrency situations,when some threads are stalled waiting for a lock. The crash comes from lock analysis function Sync::stalled(), that prints list of locks and wait queue.
      
      Problem: 
      SyncObject::wait() does not reset thread->lockPending to NULL in timeout situations. So it can happen that lockPending points to invalid memory for some Thread object.  When Sync::stalled() is trying to analyze the locks, it will access lockPending and crash.
      
      Fix:
      Set  thread->lockPending b NULL before SyncObject::wait() throws exception in timedout().
modified:
  storage/falcon/SyncObject.cpp

=== modified file 'storage/falcon/SyncObject.cpp'
--- a/storage/falcon/SyncObject.cpp	2009-01-27 17:32:40 +0000
+++ b/storage/falcon/SyncObject.cpp	2009-01-30 13:13:19 +0000
@@ -652,6 +652,7 @@ void SyncObject::wait(LockType type, Thr
 						}
 
 				mutex.release();
+				thread->lockPending = NULL;
 				timedout(timeout);
 				}
 			}

Thread
bzr commit into mysql-6.0-falcon-team branch (vvaintroub:2990)Bug#42475Vladislav Vaintroub30 Jan