X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Finit.c;h=8036654c111daff82938253ecf42ab55b8e86a9c;hp=01619bc129b9506270973e3a96e87f380c72af08;hb=a3b0d466930ec45bc3ddf4c9e853d73d37783f44;hpb=b7a7f39afeb4748b4c25dbccb8951711b8b70eaf diff --git a/crypto/init.c b/crypto/init.c index 01619bc129..8036654c11 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -67,6 +67,9 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_base) { #ifdef OPENSSL_INIT_DEBUG fprintf(stderr, "OPENSSL_INIT: ossl_init_base: Setting up stop handlers\n"); +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG + ossl_malloc_setup_failures(); #endif /* * We use a dummy thread local key here. We use the destructor to detect @@ -79,6 +82,13 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_base) if ((init_lock = CRYPTO_THREAD_lock_new()) == NULL) return 0; OPENSSL_cpuid_setup(); + + /* + * BIG FAT WARNING! + * Everything needed to be initialized in this function before threads + * come along MUST happen before base_inited is set to 1, or we will + * see race conditions. + */ base_inited = 1; #if !defined(OPENSSL_NO_DSO) && !defined(OPENSSL_USE_NODELETE)