diff --git a/O/OpenBLAS/build_tarballs.jl b/O/OpenBLAS/build_tarballs.jl index 2707d38707f..996f0331e52 100644 --- a/O/OpenBLAS/build_tarballs.jl +++ b/O/OpenBLAS/build_tarballs.jl @@ -71,7 +71,9 @@ fi # Enter the fun zone -cd ${WORKSPACE}/srcdir/OpenBLAS-*/ +cd ${WORKSPACE}/srcdir/OpenBLAS*/ + +atomic_patch -p1 ${WORKSPACE}/srcdir/patches/openblas-winexit.patch # Build the actual library make "${flags[@]}" diff --git a/O/OpenBLAS/bundled/patches/openblas-winexit.patch b/O/OpenBLAS/bundled/patches/openblas-winexit.patch new file mode 100644 index 00000000000..b3268c2f880 --- /dev/null +++ b/O/OpenBLAS/bundled/patches/openblas-winexit.patch @@ -0,0 +1,27 @@ +commit b16fa2e7111dc4dc1d9d987bd5dcbf89c82b9ee8 +Author: Keno Fischer +Date: Sun Dec 29 15:08:13 2019 -0500 + + win32: Don't run cleanup if we're about to exit anyway + + If the process is about to exit, there's no point trying to do + a bunch of work to clean up resources. The kernel will release + them much more efficiently when the process exits at the end + of this function. + +diff --git a/exports/dllinit.c b/exports/dllinit.c +index 4a05c0e1..88f9af65 100644 +--- a/exports/dllinit.c ++++ b/exports/dllinit.c +@@ -50,7 +50,10 @@ BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason, LPVOID reserved) { + gotoblas_init(); + break; + case DLL_PROCESS_DETACH: +- gotoblas_quit(); ++ // If the process is about to exit, don't bother releasing any resources ++ // The kernel is much better at bulk releasing then. ++ if (!reserved) ++ gotoblas_quit(); + break; + case DLL_THREAD_ATTACH: + break;