Loading sql/slave.cc +1 −1 Original line number Diff line number Diff line Loading @@ -3446,6 +3446,7 @@ pthread_handler_t handle_slave_io(void *arg) THD_CHECK_SENTRY(thd); pthread_detach_this_thread(); thd->thread_stack= (char*) &thd; // remember where our stack is if (init_slave_thread(thd, SLAVE_THD_IO)) { pthread_cond_broadcast(&mi->start_cond); Loading @@ -3454,7 +3455,6 @@ pthread_handler_t handle_slave_io(void *arg) goto err; } mi->io_thd = thd; thd->thread_stack = (char*)&thd; // remember where our stack is pthread_mutex_lock(&LOCK_thread_count); threads.append(thd); pthread_mutex_unlock(&LOCK_thread_count); Loading sql/sql_acl.cc +2 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ my_bool acl_init(bool dont_read_acl_tables) */ if (!(thd=new THD)) DBUG_RETURN(1); /* purecov: inspected */ thd->thread_stack= (char*) &thd; thd->store_globals(); /* It is safe to call acl_reload() since acl_* arrays and hashes which Loading Loading @@ -3263,6 +3264,7 @@ my_bool grant_init() if (!(thd= new THD)) DBUG_RETURN(1); /* purecov: deadcode */ thd->thread_stack= (char*) &thd; thd->store_globals(); return_val= grant_reload(thd); delete thd; Loading sql/sql_class.cc +6 −0 Original line number Diff line number Diff line Loading @@ -517,6 +517,12 @@ void THD::awake(THD::killed_state state_to_set) bool THD::store_globals() { /* Assert that thread_stack is initialized: it's necessary to be able to track stack overrun. */ DBUG_ASSERT(this->thread_stack); if (my_pthread_setspecific_ptr(THR_THD, this) || my_pthread_setspecific_ptr(THR_MALLOC, &mem_root)) return 1; Loading sql/sql_insert.cc +1 −0 Original line number Diff line number Diff line Loading @@ -1723,6 +1723,7 @@ pthread_handler_t handle_delayed_insert(void *arg) #endif DBUG_ENTER("handle_delayed_insert"); thd->thread_stack= (char*) &thd; if (init_thr_lock() || thd->store_globals()) { thd->fatal_error(); Loading sql/sql_parse.cc +5 −1 Original line number Diff line number Diff line Loading @@ -1097,6 +1097,7 @@ pthread_handler_t handle_one_connection(void *arg) VOID(sigemptyset(&set)); // Get mask in use VOID(pthread_sigmask(SIG_UNBLOCK,&set,&thd->block_signals)); #endif thd->thread_stack= (char*) &thd; if (thd->store_globals()) { close_connection(thd, ER_OUT_OF_RESOURCES, 1); Loading @@ -1110,7 +1111,6 @@ pthread_handler_t handle_one_connection(void *arg) int error; NET *net= &thd->net; Security_context *sctx= thd->security_ctx; thd->thread_stack= (char*) &thd; net->no_send_error= 0; if ((error=check_connection(thd))) Loading Loading @@ -5288,6 +5288,7 @@ bool check_stack_overrun(THD *thd, long margin, char *buf __attribute__((unused))) { long stack_used; DBUG_ASSERT(thd == current_thd); if ((stack_used=used_stack(thd->thread_stack,(char*) &stack_used)) >= (long) (thread_stack - margin)) { Loading Loading @@ -6737,7 +6738,10 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables, allocate temporary THD for execution of acl_reload()/grant_reload(). */ if (!thd && (thd= (tmp_thd= new THD))) { thd->thread_stack= (char*) &tmp_thd; thd->store_globals(); } if (thd) { (void)acl_reload(thd); Loading Loading
sql/slave.cc +1 −1 Original line number Diff line number Diff line Loading @@ -3446,6 +3446,7 @@ pthread_handler_t handle_slave_io(void *arg) THD_CHECK_SENTRY(thd); pthread_detach_this_thread(); thd->thread_stack= (char*) &thd; // remember where our stack is if (init_slave_thread(thd, SLAVE_THD_IO)) { pthread_cond_broadcast(&mi->start_cond); Loading @@ -3454,7 +3455,6 @@ pthread_handler_t handle_slave_io(void *arg) goto err; } mi->io_thd = thd; thd->thread_stack = (char*)&thd; // remember where our stack is pthread_mutex_lock(&LOCK_thread_count); threads.append(thd); pthread_mutex_unlock(&LOCK_thread_count); Loading
sql/sql_acl.cc +2 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ my_bool acl_init(bool dont_read_acl_tables) */ if (!(thd=new THD)) DBUG_RETURN(1); /* purecov: inspected */ thd->thread_stack= (char*) &thd; thd->store_globals(); /* It is safe to call acl_reload() since acl_* arrays and hashes which Loading Loading @@ -3263,6 +3264,7 @@ my_bool grant_init() if (!(thd= new THD)) DBUG_RETURN(1); /* purecov: deadcode */ thd->thread_stack= (char*) &thd; thd->store_globals(); return_val= grant_reload(thd); delete thd; Loading
sql/sql_class.cc +6 −0 Original line number Diff line number Diff line Loading @@ -517,6 +517,12 @@ void THD::awake(THD::killed_state state_to_set) bool THD::store_globals() { /* Assert that thread_stack is initialized: it's necessary to be able to track stack overrun. */ DBUG_ASSERT(this->thread_stack); if (my_pthread_setspecific_ptr(THR_THD, this) || my_pthread_setspecific_ptr(THR_MALLOC, &mem_root)) return 1; Loading
sql/sql_insert.cc +1 −0 Original line number Diff line number Diff line Loading @@ -1723,6 +1723,7 @@ pthread_handler_t handle_delayed_insert(void *arg) #endif DBUG_ENTER("handle_delayed_insert"); thd->thread_stack= (char*) &thd; if (init_thr_lock() || thd->store_globals()) { thd->fatal_error(); Loading
sql/sql_parse.cc +5 −1 Original line number Diff line number Diff line Loading @@ -1097,6 +1097,7 @@ pthread_handler_t handle_one_connection(void *arg) VOID(sigemptyset(&set)); // Get mask in use VOID(pthread_sigmask(SIG_UNBLOCK,&set,&thd->block_signals)); #endif thd->thread_stack= (char*) &thd; if (thd->store_globals()) { close_connection(thd, ER_OUT_OF_RESOURCES, 1); Loading @@ -1110,7 +1111,6 @@ pthread_handler_t handle_one_connection(void *arg) int error; NET *net= &thd->net; Security_context *sctx= thd->security_ctx; thd->thread_stack= (char*) &thd; net->no_send_error= 0; if ((error=check_connection(thd))) Loading Loading @@ -5288,6 +5288,7 @@ bool check_stack_overrun(THD *thd, long margin, char *buf __attribute__((unused))) { long stack_used; DBUG_ASSERT(thd == current_thd); if ((stack_used=used_stack(thd->thread_stack,(char*) &stack_used)) >= (long) (thread_stack - margin)) { Loading Loading @@ -6737,7 +6738,10 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables, allocate temporary THD for execution of acl_reload()/grant_reload(). */ if (!thd && (thd= (tmp_thd= new THD))) { thd->thread_stack= (char*) &tmp_thd; thd->store_globals(); } if (thd) { (void)acl_reload(thd); Loading