summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorVladislav Vaintroub <wlad@montyprogram.com>2011-12-02 15:35:05 +0100
committerVladislav Vaintroub <wlad@montyprogram.com>2011-12-02 15:35:05 +0100
commitc4f5908a799e0b6ddcdc44f9957b5f99aaf40fd6 (patch)
tree8945418a6db73395e8a8136b49084d553dda51e9 /storage
parent970bc8cd0bd01073899a3f371cbe1ad3d0cf2057 (diff)
downloadmariadb-git-c4f5908a799e0b6ddcdc44f9957b5f99aaf40fd6.tar.gz
Fixed crashes found by application verifier:
- leaking mutex in lf_hash_destroy - pthread_getspecific() before pthread_key_create() in my_thread_var_dbug() (called by static C++ object constructors called in sys_vars) - perfschema destroys mutexes that were not created.
Diffstat (limited to 'storage')
-rw-r--r--storage/perfschema/pfs_atomic.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/storage/perfschema/pfs_atomic.cc b/storage/perfschema/pfs_atomic.cc
index 3bd744c8ea7..4db807b1d88 100644
--- a/storage/perfschema/pfs_atomic.cc
+++ b/storage/perfschema/pfs_atomic.cc
@@ -61,6 +61,7 @@
operation.
*/
my_atomic_rwlock_t PFS_atomic::m_rwlock_array[256];
+static int init_done;
void PFS_atomic::init(void)
{
@@ -68,12 +69,14 @@ void PFS_atomic::init(void)
for (i=0; i< array_elements(m_rwlock_array); i++)
my_atomic_rwlock_init(&m_rwlock_array[i]);
+ init_done= 1;
}
void PFS_atomic::cleanup(void)
{
uint i;
-
+ if (!init_done)
+ return;
for (i=0; i< array_elements(m_rwlock_array); i++)
my_atomic_rwlock_destroy(&m_rwlock_array[i]);
}