Commit 5ea5f42e06 for openssl.org
commit 5ea5f42e0636e068c70208b9029d609606e9526c
Author: David McFarland <corngood@gmail.com>
Date: Fri Dec 5 13:21:38 2025 -0400
Disable DLL detach handlers on cygwin
This patch is from cygwin, and was originally added in:
https://cygwin.com/cgit/cygwin-packages/openssl/commit/?id=da80cc438622f6b1801fb3fbb06818c3ee070495
In cygwin, it's not safe to call into libc from
DLL_THREAD/PROCESS_DETACH, and it results in crashes.
CLA: trivial
Co-authored-By: Achim Gratz <Achim.Gratz@Stromeko.DE>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Thu Mar 19 10:02:05 2026
(Merged from https://github.com/openssl/openssl/pull/29321)
diff --git a/crypto/dllmain.c b/crypto/dllmain.c
index d8060c7534..a0effb9619 100644
--- a/crypto/dllmain.c
+++ b/crypto/dllmain.c
@@ -34,7 +34,9 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
+# ifndef __CYGWIN__
OPENSSL_thread_stop();
+# endif
break;
case DLL_PROCESS_DETACH:
#if defined(OSSL_DLLMAIN_DESTRUCTOR)
diff --git a/providers/fips/self_test.c b/providers/fips/self_test.c
index 2082bf0e03..490c9dcf83 100644
--- a/providers/fips/self_test.c
+++ b/providers/fips/self_test.c
@@ -123,7 +123,9 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
init();
break;
case DLL_PROCESS_DETACH:
+# ifndef __CYGWIN__
cleanup();
+# endif
break;
default:
break;