From 4e243be509e7bf7f5cdc58555a86eed2d44c6872 Mon Sep 17 00:00:00 2001 From: Alexey Botchkov Date: Mon, 14 Oct 2013 21:23:09 +0500 Subject: [PATCH] MDEV-5131 create_embedded_thd is not thread safe, libmysqld. The emb_free_embedded_thd() has the thread-unsafe code so should be 'mutexed' also. --- libmysqld/lib_sql.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc index d5e5ecca2f5..1b632213376 100644 --- a/libmysqld/lib_sql.cc +++ b/libmysqld/lib_sql.cc @@ -416,11 +416,13 @@ int emb_unbuffered_fetch(MYSQL *mysql, char **row) static void emb_free_embedded_thd(MYSQL *mysql) { THD *thd= (THD*)mysql->thd; + mysql_mutex_lock(&LOCK_thread_count); thd->clear_data_list(); thread_count--; thd->store_globals(); thd->unlink(); delete thd; + mysql_mutex_unlock(&LOCK_thread_count); my_pthread_setspecific_ptr(THR_THD, 0); mysql->thd=0; }