mirror of
https://github.com/MariaDB/server.git
synced 2025-05-29 21:42:28 +03:00
Bug#38364: gen_lex_hash segmentation fault in debug build
Bug#36428: MY_MUTEX_INIT_FAST is used before initialization On some thread implementations, we need a fake mutex attri- bute as a placeholder, which we define as a global variable, "my_fast_mutexattr". Well. that must be initialized before used in any mutexes, and the ordering of initializations in the API function my_init() was wrong. Now, put my_thread_global_init(), which initializes the attri- butes that mutexes require.
This commit is contained in:
parent
8ce156a66f
commit
e3716a3dc0
@ -78,8 +78,12 @@ my_bool my_init(void)
|
|||||||
my_umask= 0660; /* Default umask for new files */
|
my_umask= 0660; /* Default umask for new files */
|
||||||
my_umask_dir= 0700; /* Default umask for new directories */
|
my_umask_dir= 0700; /* Default umask for new directories */
|
||||||
init_glob_errs();
|
init_glob_errs();
|
||||||
#if defined(THREAD) && defined(SAFE_MUTEX)
|
#if defined(THREAD)
|
||||||
|
if (my_thread_global_init())
|
||||||
|
return 1;
|
||||||
|
# if defined(SAFE_MUTEX)
|
||||||
safe_mutex_global_init(); /* Must be called early */
|
safe_mutex_global_init(); /* Must be called early */
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#if defined(THREAD) && defined(MY_PTHREAD_FASTMUTEX) && !defined(SAFE_MUTEX)
|
#if defined(THREAD) && defined(MY_PTHREAD_FASTMUTEX) && !defined(SAFE_MUTEX)
|
||||||
fastmutex_global_init(); /* Must be called early */
|
fastmutex_global_init(); /* Must be called early */
|
||||||
@ -89,8 +93,6 @@ my_bool my_init(void)
|
|||||||
#if defined(HAVE_PTHREAD_INIT)
|
#if defined(HAVE_PTHREAD_INIT)
|
||||||
pthread_init(); /* Must be called before DBUG_ENTER */
|
pthread_init(); /* Must be called before DBUG_ENTER */
|
||||||
#endif
|
#endif
|
||||||
if (my_thread_global_init())
|
|
||||||
return 1;
|
|
||||||
#if !defined( __WIN__) && !defined(__NETWARE__)
|
#if !defined( __WIN__) && !defined(__NETWARE__)
|
||||||
sigfillset(&my_signals); /* signals blocked by mf_brkhant */
|
sigfillset(&my_signals); /* signals blocked by mf_brkhant */
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user