#At file:///C:/bzr/mysql-6.0-falcon-team/
2805 Vladislav Vaintroub 2008-08-27
Bug#39024 Crash in DeferredIndex::detachTransaction
DeferredIndex::syncObject is accessed even after
"this" object is destroyed in releaseRef().
I put a block at the start of function and before releaseRef()
to force the destructor of sync before the object itself
is destroyed.
modified:
storage/falcon/DeferredIndex.cpp
=== modified file 'storage/falcon/DeferredIndex.cpp'
--- a/storage/falcon/DeferredIndex.cpp 2008-07-25 18:07:24 +0000
+++ b/storage/falcon/DeferredIndex.cpp 2008-08-27 21:52:50 +0000
@@ -825,6 +825,7 @@ void DeferredIndex::detachIndex(void)
void DeferredIndex::detachTransaction(void)
{
+ {
Sync sync(&syncObject, "DeferredIndex::detachTransaction");
sync.lock(Exclusive);
transaction = NULL;
@@ -839,6 +840,7 @@ void DeferredIndex::detachTransaction(vo
}
else
sync.unlock();
+ }
releaseRef();
}