Bug#11858960 - WINDOWS SERVICE FAILING TO START IMMEDIATELY AFTER
INSTALLATION When starting mysqld as an MS Windows NT service, it crashed with "Error 1067: The process terminated unexpectedly". The problem is that thread local variables are not allocated and initialized properly when started as a service. When the server is started as a regular executable, the problem does not occur. Analysis showed that this is a regression after the patch for Bug#11765237/Bug#11763065. Before, the thread local storage was initialized by the call chain: win_main->my_basic_init->my_thread_basic_global_init-> my_thread_init When the my_init() structure was changed, this initialization was moved from win_main to mysqld_main. When started as a service win_main is run in a separate thread, which does not have mysqld_main in its call path, so my_thread_init is never called for this thread. Added a call to my_thread_init / my_thread_end in the service handler function, which solves the problem.
This commit is contained in:
parent
42e3c5d13c
commit
658340319b
@ -4656,10 +4656,15 @@ int mysqld_main(int argc, char **argv)
|
||||
#if defined(__WIN__) && !defined(EMBEDDED_LIBRARY)
|
||||
int mysql_service(void *p)
|
||||
{
|
||||
if (my_thread_init())
|
||||
return 1;
|
||||
|
||||
if (use_opt_args)
|
||||
win_main(opt_argc, opt_argv);
|
||||
else
|
||||
win_main(Service.my_argc, Service.my_argv);
|
||||
|
||||
my_thread_end();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user