#! /bin/sh /usr/share/dpatch/dpatch-run ## fix-dummy-thread-race-condition.dpatch by ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Avoid dummy thread for pthread_exit workaround @DPATCH@ diff -urNad mysql-dfsg-5.0-5.0.51a~/mysys/my_thr_init.c mysql-dfsg-5.0-5.0.51a/mysys/my_thr_init.c --- mysql-dfsg-5.0-5.0.51a~/mysys/my_thr_init.c 2009-02-13 20:50:42.000000000 +0000 +++ mysql-dfsg-5.0-5.0.51a/mysys/my_thr_init.c 2009-02-13 20:56:05.000000000 +0000 @@ -47,23 +47,6 @@ pthread_mutexattr_t my_errorcheck_mutexattr; #endif -#ifdef TARGET_OS_LINUX - -/* - Dummy thread spawned in my_thread_global_init() below to avoid - race conditions in NPTL pthread_exit code. -*/ - -static pthread_handler_t -nptl_pthread_exit_hack_handler(void *arg __attribute__((unused))) -{ - /* Do nothing! */ - pthread_exit(0); - return 0; -} - -#endif /* TARGET_OS_LINUX */ - static uint get_thread_lib(void); /* @@ -88,32 +71,6 @@ return 1; } -#ifdef TARGET_OS_LINUX - /* - BUG#24507: Race conditions inside current NPTL pthread_exit() - implementation. - - To avoid a possible segmentation fault during concurrent - executions of pthread_exit(), a dummy thread is spawned which - initializes internal variables of pthread lib. See bug description - for a full explanation. - - TODO: Remove this code when fixed versions of glibc6 are in common - use. - */ - if (thd_lib_detected == THD_LIB_NPTL) - { - pthread_t dummy_thread; - pthread_attr_t dummy_thread_attr; - - pthread_attr_init(&dummy_thread_attr); - pthread_attr_setdetachstate(&dummy_thread_attr, PTHREAD_CREATE_DETACHED); - - pthread_create(&dummy_thread,&dummy_thread_attr, - nptl_pthread_exit_hack_handler, NULL); - } -#endif /* TARGET_OS_LINUX */ - #ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP /* Set mutex type to "fast" a.k.a "adaptive"