Fix for #2063: The DllMain used in Cygwin did not run the thread memory
pool cleanup upon THREAD_DETACH which is needed when compiled with USE_TLS=1.
This commit is contained in:
parent
4fc17d0d75
commit
4ad694eda1
|
@ -1313,6 +1313,13 @@ void blas_memory_free_nolock(void * map_address) {
|
|||
free(map_address);
|
||||
}
|
||||
|
||||
#ifdef SMP
|
||||
void blas_thread_memory_cleanup(void) {
|
||||
blas_memory_cleanup((void*)get_memory_table());
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void blas_shutdown(void){
|
||||
#ifdef SMP
|
||||
BLASFUNC(blas_thread_shutdown)();
|
||||
|
@ -1322,7 +1329,7 @@ void blas_shutdown(void){
|
|||
/* Only cleanupIf we were built for threading and TLS was initialized */
|
||||
if (local_storage_key)
|
||||
#endif
|
||||
blas_memory_cleanup((void*)get_memory_table());
|
||||
blas_thread_memory_cleanup();
|
||||
|
||||
#ifdef SEEK_ADDRESS
|
||||
base_address = 0UL;
|
||||
|
@ -1552,7 +1559,7 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReser
|
|||
break;
|
||||
case DLL_THREAD_DETACH:
|
||||
#if defined(SMP)
|
||||
blas_memory_cleanup((void*)get_memory_table());
|
||||
blas_thread_memory_cleanup();
|
||||
#endif
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
|
|
|
@ -40,15 +40,25 @@
|
|||
|
||||
void gotoblas_init(void);
|
||||
void gotoblas_quit(void);
|
||||
#if defined(SMP) && defined(USE_TLS)
|
||||
void blas_thread_memory_cleanup(void);
|
||||
#endif
|
||||
|
||||
BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason, LPVOID reserved) {
|
||||
|
||||
if (reason == DLL_PROCESS_ATTACH) {
|
||||
gotoblas_init();
|
||||
}
|
||||
|
||||
if (reason == DLL_PROCESS_DETACH) {
|
||||
gotoblas_quit();
|
||||
switch(reason) {
|
||||
case DLL_PROCESS_ATTACH:
|
||||
gotoblas_init();
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
gotoblas_quit();
|
||||
break;
|
||||
case DLL_THREAD_ATTACH:
|
||||
break;
|
||||
case DLL_THREAD_DETACH:
|
||||
#if defined(SMP) && defined(USE_TLS)
|
||||
blas_thread_memory_cleanup(void);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
|
Loading…
Reference in New Issue