https://bugs.winehq.org/show_bug.cgi?id=44192
Bug ID: 44192 Summary: Dragon Age Origins Awakening installer deadlock when extracting files Product: Wine Version: 2.21 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: lorenzofer@live.it Distribution: ---
Created attachment 59959 --> https://bugs.winehq.org/attachment.cgi?id=59959 Wine log
Trying to install Dragon Age Awakening in a clean wineprefix (where there is already installed Origins) result in a deadlock after ending file extraction. The installer thus hang completly and must be killed.
Awakenings is composed of two compressed files, one for "core" files, and one for "addons" file. It's completly random on which file it hangs, sometimes on the first file sometimes on the second, but is hanging always after it extracted the last file of the archive (the last line of the installer log is Extract: packages or Extract : addons with the extracting file percentual progression, blocking at 99.4% or 100% )
In the log I'm getting: err:ntdll:RtlpWaitForCriticalSection section 0x7bd1cbc0 "../../../dlls/ntdll/loader.c: loader_section" wait timed out in thread 0009, bl ocked by 002d, retrying (60 sec) err:ntdll:RtlpWaitForCriticalSection section 0x7bd1cbc0 "../../../dlls/ntdll/loader.c: loader_section" wait timed out in thread 0032, bl ocked by 002d, retrying (60 sec) err:ntdll:RtlLeaveCriticalSection section 0x117b0 is not acquired
multiple times.
The log is from Wine stagin 2.21, but I tested also with the last wine 3.0rc2 and doesn't change of a comma.
(While searching for similar bugs I found this Bug 22091, but is marked as fixed, and mention a crash I'm not having)
https://bugs.winehq.org/show_bug.cgi?id=44192
Lorenzo Ferrillo lorenzofer@live.it changed:
What |Removed |Added ---------------------------------------------------------------------------- Distribution|--- |ArchLinux
https://bugs.winehq.org/show_bug.cgi?id=44192
--- Comment #1 from Lorenzo Ferrillo lorenzofer@live.it --- Start the installer with: schedtool -a 0 -e wine Setup.exe
workaround the problems and it allow the installation to sucesfully complete.
https://bugs.winehq.org/show_bug.cgi?id=44192
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #2 from joaopa jeremielapuree@yahoo.fr --- Does the bug still occur with vanilla wine-6.19?
https://bugs.winehq.org/show_bug.cgi?id=44192
--- Comment #3 from Lorenzo Ferrillo lorenzofer@live.it --- @joaopa Wine 6.20 is still affected (both normal and staging tested)
https://bugs.winehq.org/show_bug.cgi?id=44192
--- Comment #4 from Lorenzo Ferrillo lorenzofer@live.it --- Got a small log of the bug:
0100:trace:module:LdrGetDllHandleEx L"C:\users\lorenzo\Temp\nsi8b5c.tmp\nsisUnRar2.dll" -> 02E40000 (load path (null)) 0100:trace:module:LdrUnloadDll (02E40000) 0100:trace:module:lock_loader_exclusive recursion_count 0. 0100:trace:module:LdrUnloadDll (L"nsisUnRar2.dll") - START 0100:trace:module:MODULE_DecRefCount (L"nsisUnRar2.dll") ldr.LoadCount: 1 0100:trace:module:LdrUnloadDll END 0100:trace:module:unlock_loader recursion_count 0. 0100:trace:module:LdrGetDllHandleEx flag 0, load_path 00000000, dll_characteristics 00000000, name 006CF3A8, base 006CF3A4. 0100:trace:module:lock_loader_exclusive recursion_count 0. 0100:trace:module:lock_loader_exclusive recursion_count 1. 0100:trace:module:LdrAddRefDll (L"nsisUnRar2.dll") ldr.LoadCount: 2 0100:trace:module:unlock_loader recursion_count 1. 0100:trace:module:unlock_loader recursion_count 0. 0100:trace:module:LdrGetDllHandleEx L"C:\users\lorenzo\Temp\nsi8b5c.tmp\nsisUnRar2.dll" -> 02E40000 (load path (null)) 0100:trace:module:LdrUnloadDll (02E40000) 0104:trace:module:LdrUnloadDll (02E40000) 0100:trace:module:lock_loader_exclusive recursion_count 0. 0104:trace:module:lock_loader_exclusive recursion_count 0. 0100:trace:module:LdrUnloadDll (L"nsisUnRar2.dll") - START 0100:trace:module:MODULE_DecRefCount (L"nsisUnRar2.dll") ldr.LoadCount: 1 0100:trace:module:LdrUnloadDll END 0100:trace:module:unlock_loader recursion_count 0. 0104:trace:module:LdrUnloadDll (L"nsisUnRar2.dll") - START 0104:trace:module:MODULE_DecRefCount (L"nsisUnRar2.dll") ldr.LoadCount: 0 0104:trace:module:MODULE_DecRefCount (L"OLEACC.dll") ldr.LoadCount: 0 0104:trace:module:MODULE_DecRefCount (L"oleaut32.dll") ldr.LoadCount: 4 0104:trace:module:MODULE_DecRefCount (L"winspool.drv") ldr.LoadCount: 1 0104:trace:module:MODULE_DecRefCount (L"oleaut32.dll") ldr.LoadCount: 3 0104:trace:module:MODULE_InitDLL (02E40000 L"nsisUnRar2.dll",PROCESS_DETACH,00000000) - CALL 0104:trace:module:LdrUnloadDll (03AE0000) 0104:trace:module:lock_loader_exclusive recursion_count 1. 0104:trace:module:LdrUnloadDll (L"unrar.dll") - START 0104:trace:module:MODULE_DecRefCount (L"unrar.dll") ldr.LoadCount: 0 0104:trace:module:LdrUnloadDll END 0104:trace:module:unlock_loader recursion_count 1. 0100:trace:module:LdrGetDllHandleEx flag 0, load_path 00000000, dll_characteristics 00000000, name 006CF3A8, base 006CF3A4. 0100:trace:module:lock_loader_exclusive recursion_count 0.
Thread 100 is at the end trying to acquire the exclusive lock while thread 104 still hold the lock (recursion_count in the unlock_loader is 1)
https://bugs.winehq.org/show_bug.cgi?id=44192
--- Comment #5 from Lorenzo Ferrillo lorenzofer@live.it --- The flow seems to be this: The application call LdrUnloadDll nsisUnrar2.dll, acquire the lock , LdrUnloadDLL call process_detach that call ModuleInitDLL with PROCESS_DETACH , it execute the DLL entrypoint call_dll_entry_point The nsisUnRar2.dll entrypoint for detach call LdrUnloadDll fo unrar.dll. However it seems that the entrypoint isn't returning at all, making the thread stuck inside the entrypoint. This cause ModuleInitDLL to not return and the lock to not be freed.