Commit 13615c5e authored by Nirbhay Choubey's avatar Nirbhay Choubey

MDEV-8208: Sporadic SEGFAULT on startup

Addendum:
* Before calling THD::init_for_queries(), flip the current_thd to wsrep
thread so that memory gets allocated for the right THD.
* Use wsrep_creating_startup_threads instead of plugins_are_initialized
as the condition for the execution of THD::init_for_queries() within
start_wsrep_THD(), as use of latter could still leave some room for
race.
parent d54bc3c0
......@@ -93,6 +93,7 @@ void init_alloc_root(MEM_ROOT *mem_root, size_t block_size,
void reset_root_defaults(MEM_ROOT *mem_root, size_t block_size,
size_t pre_alloc_size __attribute__((unused)))
{
DBUG_ENTER("reset_root_defaults");
DBUG_ASSERT(alloc_root_inited(mem_root));
mem_root->block_size= block_size - ALLOC_ROOT_MIN_BLOCK_SIZE;
......@@ -114,7 +115,7 @@ void reset_root_defaults(MEM_ROOT *mem_root, size_t block_size,
{
/* We found a suitable block, no need to do anything else */
mem_root->pre_alloc= mem;
return;
DBUG_VOID_RETURN;
}
if (mem->left + ALIGN_SIZE(sizeof(USED_MEM)) == mem->size)
{
......@@ -142,6 +143,8 @@ void reset_root_defaults(MEM_ROOT *mem_root, size_t block_size,
else
#endif
mem_root->pre_alloc= 0;
DBUG_VOID_RETURN;
}
......
......@@ -4604,7 +4604,17 @@ a file name for --log-bin-index option", opt_binlog_index_name);
{
if (tmp->wsrep_applier == true)
{
/*
Set THR_THD to temporally point to this THD to register all the
variables that allocates memory for this THD.
*/
THD *current_thd_saved= current_thd;
my_pthread_setspecific_ptr(THR_THD, tmp);
tmp->init_for_queries();
/* Restore current_thd. */
my_pthread_setspecific_ptr(THR_THD, current_thd_saved);
}
}
mysql_mutex_unlock(&LOCK_thread_count);
......@@ -4912,7 +4922,7 @@ pthread_handler_t start_wsrep_THD(void *arg)
thd->proc_info= 0;
thd->command= COM_SLEEP;
if (plugins_are_initialized)
if (wsrep_creating_startup_threads == 0)
{
thd->init_for_queries();
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment