Loading sql/item_cmpfunc.cc +1 −1 Original line number Diff line number Diff line Loading @@ -2321,7 +2321,7 @@ Item_cond::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref) */ and_tables_cache= ~(table_map) 0; if (check_stack_overrun(thd, buff)) if (check_stack_overrun(thd, STACK_MIN_SIZE)) return TRUE; // Fatal error flag is set! /* The following optimization reduces the depth of an AND-OR tree. Loading sql/item_func.cc +2 −8 Original line number Diff line number Diff line Loading @@ -293,14 +293,11 @@ Item_func::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref) { DBUG_ASSERT(fixed == 0); Item **arg,**arg_end; #ifndef EMBEDDED_LIBRARY // Avoid compiler warning char buff[STACK_BUFF_ALLOC]; // Max argument in function #endif used_tables_cache= not_null_tables_cache= 0; const_item_cache=1; if (check_stack_overrun(thd, buff)) if (check_stack_overrun(thd, STACK_MIN_SIZE+STACK_BUFF_ALLOC)) return TRUE; // Fatal error if flag is set! if (arg_count) { // Print purify happy Loading Loading @@ -2567,12 +2564,9 @@ bool udf_handler::fix_fields(THD *thd, TABLE_LIST *tables, Item_result_field *func, uint arg_count, Item **arguments) { #ifndef EMBEDDED_LIBRARY // Avoid compiler warning char buff[STACK_BUFF_ALLOC]; // Max argument in function #endif DBUG_ENTER("Item_udf_func::fix_fields"); if (check_stack_overrun(thd, buff)) if (check_stack_overrun(thd, STACK_MIN_SIZE+STACK_BUFF_ALLOC)) DBUG_RETURN(TRUE); // Fatal error flag is set! udf_func *tmp_udf=find_udf(u_d->name.str,(uint) u_d->name.length,1); Loading sql/item_subselect.cc +1 −1 Original line number Diff line number Diff line Loading @@ -138,7 +138,7 @@ bool Item_subselect::fix_fields(THD *thd_param, TABLE_LIST *tables, Item **ref) DBUG_ASSERT(fixed == 0); engine->set_thd((thd= thd_param)); if (check_stack_overrun(thd, (gptr)&res)) if (check_stack_overrun(thd, STACK_MIN_SIZE)) return TRUE; res= engine->prepare(); Loading sql/mysql_priv.h +2 −2 Original line number Diff line number Diff line Loading @@ -1077,7 +1077,7 @@ extern ulong max_connections,max_connect_errors, connect_timeout; extern ulong slave_net_timeout, slave_trans_retries; extern uint max_user_connections; extern ulong what_to_log,flush_time; extern ulong query_buff_size, thread_stack,thread_stack_min; extern ulong query_buff_size, thread_stack; extern ulong binlog_cache_size, max_binlog_cache_size, open_files_limit; extern ulong max_binlog_size, max_relay_log_size; extern ulong rpl_recovery_rank, thread_cache_size; Loading Loading @@ -1429,7 +1429,7 @@ inline int hexchar_to_int(char c) #ifndef EMBEDDED_LIBRARY extern "C" void unireg_abort(int exit_code); void kill_delayed_threads(void); bool check_stack_overrun(THD *thd,char *dummy); bool check_stack_overrun(THD *thd, long margin); #else #define unireg_abort(exit_code) DBUG_RETURN(exit_code) inline void kill_delayed_threads(void) {} Loading sql/mysqld.cc +21 −3 Original line number Diff line number Diff line Loading @@ -348,7 +348,7 @@ uint tc_heuristic_recover= 0; uint volatile thread_count, thread_running; ulong back_log, connect_timeout, concurrency; ulong server_id, thd_startup_options; ulong table_cache_size, thread_stack, thread_stack_min, what_to_log; ulong table_cache_size, thread_stack, what_to_log; ulong query_buff_size, slow_launch_time, slave_open_temp_tables; ulong open_files_limit, max_binlog_size, max_relay_log_size; ulong slave_net_timeout, slave_trans_retries; Loading Loading @@ -2089,7 +2089,13 @@ static void start_signal_handler(void) (void) pthread_attr_setdetachstate(&thr_attr,PTHREAD_CREATE_DETACHED); if (!(opt_specialflag & SPECIAL_NO_PRIOR)) my_pthread_attr_setprio(&thr_attr,INTERRUPT_PRIOR); #if defined(__ia64__) || defined(__ia64) /* Peculiar things with ia64 platforms - it seems we only have half the stack size in reality, so we have to double it here */ pthread_attr_setstacksize(&thr_attr,thread_stack*2); #else pthread_attr_setstacksize(&thr_attr,thread_stack); #endif #endif (void) pthread_mutex_lock(&LOCK_thread_count); Loading Loading @@ -3010,23 +3016,35 @@ int main(int argc, char **argv) init_signals(); if (!(opt_specialflag & SPECIAL_NO_PRIOR)) my_pthread_setprio(pthread_self(),CONNECT_PRIOR); #if defined(__ia64__) || defined(__ia64) /* Peculiar things with ia64 platforms - it seems we only have half the stack size in reality, so we have to double it here */ pthread_attr_setstacksize(&connection_attrib,thread_stack*2); #else pthread_attr_setstacksize(&connection_attrib,thread_stack); #endif #ifdef HAVE_PTHREAD_ATTR_GETSTACKSIZE { /* Retrieve used stack size; Needed for checking stack overflows */ size_t stack_size= 0; pthread_attr_getstacksize(&connection_attrib, &stack_size); #if defined(__ia64__) || defined(__ia64) stack_size/= 2; #endif /* We must check if stack_size = 0 as Solaris 2.9 can return 0 here */ if (stack_size && stack_size < thread_stack) { if (global_system_variables.log_warnings) sql_print_warning("Asked for %ld thread stack, but got %ld", thread_stack, stack_size); #if defined(__ia64__) || defined(__ia64) thread_stack= stack_size*2; #else thread_stack= stack_size; #endif } } #endif thread_stack_min=thread_stack - STACK_MIN_SIZE; (void) thr_setconcurrency(concurrency); // 10 by default Loading Loading
sql/item_cmpfunc.cc +1 −1 Original line number Diff line number Diff line Loading @@ -2321,7 +2321,7 @@ Item_cond::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref) */ and_tables_cache= ~(table_map) 0; if (check_stack_overrun(thd, buff)) if (check_stack_overrun(thd, STACK_MIN_SIZE)) return TRUE; // Fatal error flag is set! /* The following optimization reduces the depth of an AND-OR tree. Loading
sql/item_func.cc +2 −8 Original line number Diff line number Diff line Loading @@ -293,14 +293,11 @@ Item_func::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref) { DBUG_ASSERT(fixed == 0); Item **arg,**arg_end; #ifndef EMBEDDED_LIBRARY // Avoid compiler warning char buff[STACK_BUFF_ALLOC]; // Max argument in function #endif used_tables_cache= not_null_tables_cache= 0; const_item_cache=1; if (check_stack_overrun(thd, buff)) if (check_stack_overrun(thd, STACK_MIN_SIZE+STACK_BUFF_ALLOC)) return TRUE; // Fatal error if flag is set! if (arg_count) { // Print purify happy Loading Loading @@ -2567,12 +2564,9 @@ bool udf_handler::fix_fields(THD *thd, TABLE_LIST *tables, Item_result_field *func, uint arg_count, Item **arguments) { #ifndef EMBEDDED_LIBRARY // Avoid compiler warning char buff[STACK_BUFF_ALLOC]; // Max argument in function #endif DBUG_ENTER("Item_udf_func::fix_fields"); if (check_stack_overrun(thd, buff)) if (check_stack_overrun(thd, STACK_MIN_SIZE+STACK_BUFF_ALLOC)) DBUG_RETURN(TRUE); // Fatal error flag is set! udf_func *tmp_udf=find_udf(u_d->name.str,(uint) u_d->name.length,1); Loading
sql/item_subselect.cc +1 −1 Original line number Diff line number Diff line Loading @@ -138,7 +138,7 @@ bool Item_subselect::fix_fields(THD *thd_param, TABLE_LIST *tables, Item **ref) DBUG_ASSERT(fixed == 0); engine->set_thd((thd= thd_param)); if (check_stack_overrun(thd, (gptr)&res)) if (check_stack_overrun(thd, STACK_MIN_SIZE)) return TRUE; res= engine->prepare(); Loading
sql/mysql_priv.h +2 −2 Original line number Diff line number Diff line Loading @@ -1077,7 +1077,7 @@ extern ulong max_connections,max_connect_errors, connect_timeout; extern ulong slave_net_timeout, slave_trans_retries; extern uint max_user_connections; extern ulong what_to_log,flush_time; extern ulong query_buff_size, thread_stack,thread_stack_min; extern ulong query_buff_size, thread_stack; extern ulong binlog_cache_size, max_binlog_cache_size, open_files_limit; extern ulong max_binlog_size, max_relay_log_size; extern ulong rpl_recovery_rank, thread_cache_size; Loading Loading @@ -1429,7 +1429,7 @@ inline int hexchar_to_int(char c) #ifndef EMBEDDED_LIBRARY extern "C" void unireg_abort(int exit_code); void kill_delayed_threads(void); bool check_stack_overrun(THD *thd,char *dummy); bool check_stack_overrun(THD *thd, long margin); #else #define unireg_abort(exit_code) DBUG_RETURN(exit_code) inline void kill_delayed_threads(void) {} Loading
sql/mysqld.cc +21 −3 Original line number Diff line number Diff line Loading @@ -348,7 +348,7 @@ uint tc_heuristic_recover= 0; uint volatile thread_count, thread_running; ulong back_log, connect_timeout, concurrency; ulong server_id, thd_startup_options; ulong table_cache_size, thread_stack, thread_stack_min, what_to_log; ulong table_cache_size, thread_stack, what_to_log; ulong query_buff_size, slow_launch_time, slave_open_temp_tables; ulong open_files_limit, max_binlog_size, max_relay_log_size; ulong slave_net_timeout, slave_trans_retries; Loading Loading @@ -2089,7 +2089,13 @@ static void start_signal_handler(void) (void) pthread_attr_setdetachstate(&thr_attr,PTHREAD_CREATE_DETACHED); if (!(opt_specialflag & SPECIAL_NO_PRIOR)) my_pthread_attr_setprio(&thr_attr,INTERRUPT_PRIOR); #if defined(__ia64__) || defined(__ia64) /* Peculiar things with ia64 platforms - it seems we only have half the stack size in reality, so we have to double it here */ pthread_attr_setstacksize(&thr_attr,thread_stack*2); #else pthread_attr_setstacksize(&thr_attr,thread_stack); #endif #endif (void) pthread_mutex_lock(&LOCK_thread_count); Loading Loading @@ -3010,23 +3016,35 @@ int main(int argc, char **argv) init_signals(); if (!(opt_specialflag & SPECIAL_NO_PRIOR)) my_pthread_setprio(pthread_self(),CONNECT_PRIOR); #if defined(__ia64__) || defined(__ia64) /* Peculiar things with ia64 platforms - it seems we only have half the stack size in reality, so we have to double it here */ pthread_attr_setstacksize(&connection_attrib,thread_stack*2); #else pthread_attr_setstacksize(&connection_attrib,thread_stack); #endif #ifdef HAVE_PTHREAD_ATTR_GETSTACKSIZE { /* Retrieve used stack size; Needed for checking stack overflows */ size_t stack_size= 0; pthread_attr_getstacksize(&connection_attrib, &stack_size); #if defined(__ia64__) || defined(__ia64) stack_size/= 2; #endif /* We must check if stack_size = 0 as Solaris 2.9 can return 0 here */ if (stack_size && stack_size < thread_stack) { if (global_system_variables.log_warnings) sql_print_warning("Asked for %ld thread stack, but got %ld", thread_stack, stack_size); #if defined(__ia64__) || defined(__ia64) thread_stack= stack_size*2; #else thread_stack= stack_size; #endif } } #endif thread_stack_min=thread_stack - STACK_MIN_SIZE; (void) thr_setconcurrency(concurrency); // 10 by default Loading