From: Nikos Mavrogiannopoulos Date: Fri, 26 Jun 2015 14:31:21 +0000 (+0200) Subject: Don't use pthread_atfork(), it is not safe to use with dlopen() X-Git-Tag: gnutls_3_4_3~33 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=84b1a7ac383bf1db4c73b8f044170446deca8b2e;p=thirdparty%2Fgnutls.git Don't use pthread_atfork(), it is not safe to use with dlopen() http://austingroupbugs.net/view.php?id=851 --- diff --git a/configure.ac b/configure.ac index 3701889ab4..2a02dcb080 100644 --- a/configure.ac +++ b/configure.ac @@ -229,7 +229,7 @@ fi AM_CONDITIONAL(HAVE_FORK, test "$ac_cv_func_fork" != "no") -AC_CHECK_FUNCS([pthread_atfork __register_atfork],,) +AC_CHECK_FUNCS([__register_atfork],,) AC_LIB_HAVE_LINKFLAGS(rt,, [#include #include diff --git a/lib/atfork.c b/lib/atfork.c index 28aaf70177..3ef9bb9e92 100644 --- a/lib/atfork.c +++ b/lib/atfork.c @@ -42,18 +42,7 @@ static void fork_handler(void) } # endif -# if defined(HAVE_PTHREAD_ATFORK) - -# include - -int _gnutls_register_fork_handler(void) -{ - if (pthread_atfork(NULL, NULL, fork_handler) != 0) - return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR); - return 0; -} - -# elif defined(HAVE___REGISTER_ATFORK) +# if defined(HAVE___REGISTER_ATFORK) extern int __register_atfork(void (*)(void), void(*)(void), void (*)(void), void *); extern void *__dso_handle; diff --git a/lib/atfork.h b/lib/atfork.h index 23700fdb7a..6c046d0ae0 100644 --- a/lib/atfork.h +++ b/lib/atfork.h @@ -28,7 +28,7 @@ extern unsigned int _gnutls_forkid; -#if defined(HAVE___REGISTER_ATFORK) || defined(HAVE_PTHREAD_ATFORK) +#if defined(HAVE___REGISTER_ATFORK) # define HAVE_ATFORK #endif