summaryrefslogtreecommitdiff
path: root/storage/xtradb/srv
diff options
context:
space:
mode:
authorunknown <knielsen@knielsen-hq.org>2010-01-15 20:48:33 +0100
committerunknown <knielsen@knielsen-hq.org>2010-01-15 20:48:33 +0100
commitea328df58a737f675862cb4e2391b45fbc300636 (patch)
tree9d8a2153ecd99c70c232366cdf067c93e1bd189d /storage/xtradb/srv
parenta9ecb19832dffc6b07e8823942bdd3e7054e929f (diff)
downloadmariadb-git-ea328df58a737f675862cb4e2391b45fbc300636.tar.gz
Fix crashes by taking kernel mutex when calling srv_table_reserve_slot() during thread startup.
Diffstat (limited to 'storage/xtradb/srv')
-rw-r--r--storage/xtradb/srv/srv0srv.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/storage/xtradb/srv/srv0srv.c b/storage/xtradb/srv/srv0srv.c
index 38176938e62..00352191c2b 100644
--- a/storage/xtradb/srv/srv0srv.c
+++ b/storage/xtradb/srv/srv0srv.c
@@ -2559,10 +2559,9 @@ srv_master_thread(
srv_main_thread_process_no = os_proc_get_number();
srv_main_thread_id = os_thread_pf(os_thread_get_curr_id());
- srv_table_reserve_slot(SRV_MASTER);
-
mutex_enter(&kernel_mutex);
+ srv_table_reserve_slot(SRV_MASTER);
srv_n_threads_active[SRV_MASTER]++;
mutex_exit(&kernel_mutex);
@@ -3167,8 +3166,8 @@ srv_purge_thread(
os_thread_pf(os_thread_get_curr_id()));
#endif
- srv_table_reserve_slot(SRV_PURGE);
mutex_enter(&kernel_mutex);
+ srv_table_reserve_slot(SRV_PURGE);
srv_n_threads_active[SRV_PURGE]++;
mutex_exit(&kernel_mutex);
@@ -3255,8 +3254,8 @@ srv_purge_worker_thread(
fprintf(stderr, "Purge worker thread starts, id %lu\n",
os_thread_pf(os_thread_get_curr_id()));
#endif
- srv_table_reserve_slot(SRV_PURGE_WORKER);
mutex_enter(&kernel_mutex);
+ srv_table_reserve_slot(SRV_PURGE_WORKER);
srv_n_threads_active[SRV_PURGE_WORKER]++;
mutex_exit(&kernel_mutex);