#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#42475 | Vladislav Vaintroub | 30 Jan |