From 45575ff388cbb4c49480c6e5e8eea32d5c7d74a4 Mon Sep 17 00:00:00 2001 From: Rob Schneider Date: Tue, 15 Jan 2013 11:49:12 -0800 Subject: [PATCH] libgl-gdi: Avoid hangs on DLL_PROCESS_DETACH. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit At process exit DLL_PROCESS_DETACH is signaled to DllMain(), where then a final cleanup is triggered. In stw_cleanup() code is triggered that tries to communicate a shutdown to the spawned threads -- however at that time those threads have already been terminated by the OS and so the process hangs. v2: skip stw_cleanup_thread() too Signed-off-by: José Fonseca --- src/gallium/targets/libgl-gdi/libgl_gdi.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gallium/targets/libgl-gdi/libgl_gdi.c b/src/gallium/targets/libgl-gdi/libgl_gdi.c index 112904ab5fe..3f7dc00b080 100644 --- a/src/gallium/targets/libgl-gdi/libgl_gdi.c +++ b/src/gallium/targets/libgl-gdi/libgl_gdi.c @@ -159,8 +159,10 @@ DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) break; case DLL_PROCESS_DETACH: - stw_cleanup_thread(); - stw_cleanup(); + if (lpReserved == NULL) { + stw_cleanup_thread(); + stw_cleanup(); + } break; } return TRUE; -- 2.30.2