https://bugs.winehq.org/show_bug.cgi?id=52314
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Regression SHA1| |b67cda8975f9551ce6f48a18ffd | |3a1fcc7a278b0 CC| |dark.shadow4@web.de, | |rbernon@codeweavers.com Ever confirmed|0 |1 Keywords| |regression Status|UNCONFIRMED |NEW
--- Comment #4 from Fabian Maurer dark.shadow4@web.de --- So, I got to the bottom of this. Although I currently have no idea how to fix. The following happens:
1) The programs calls FreeLibrary on dinput.dll 2) We go through (ntdll/loader.c) LdrUnloadDll and acquire loader_section 3) -> process_detach -> MODULE_InitDLL -> (dinput) DllMain 4) calls dinput_thread_stop, sends message to thread and waits for it to end 5) Thread returns, LdrShutdownThread gets called which tries to get loader_section 6) Deadlock
dinput_thread_stop is a recent change:
commit b67cda8975f9551ce6f48a18ffd3a1fcc7a278b0 Author: RĂ©mi Bernon rbernon@codeweavers.com Date: Fri Dec 10 09:44:44 2021 +0100
Reverting fixes the issue. CCing author.