Commit 51ffca50 authored by Davi Arnaut's avatar Davi Arnaut

Bug#58080: Crash on failure to create a thread to handle a user connection

The problem was that the scheduler function used to handle a
new user connection could use the ER() macro without having a
THD object bound to the current thread. The crash would happen
whenever the function failed to create a new thread to handle a
user connection. Thread creation can fail due to lack or limit
of available resources.

The solution is to simply use the ER_THD() macro instead and pass
to it the THD object which would be bound to the connection.

Fix was tested manually. In a test case, it is too cumbersome to
inject a error in this context.

sql/mysqld.cc:
  Use ER_THD and pass the object.
parent 51e20741
......@@ -4949,7 +4949,7 @@ void create_thread_to_handle_connection(THD *thd)
statistic_increment(aborted_connects,&LOCK_status);
/* Can't use my_error() since store_globals has not been called. */
my_snprintf(error_message_buff, sizeof(error_message_buff),
ER(ER_CANT_CREATE_THREAD), error);
ER_THD(thd, ER_CANT_CREATE_THREAD), error);
net_send_error(thd, ER_CANT_CREATE_THREAD, error_message_buff, NULL);
mysql_mutex_lock(&LOCK_thread_count);
close_connection(thd,0,0);
......
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