mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
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.
This commit is contained in:
@ -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);
|
||||
|
Reference in New Issue
Block a user