http://bugs.winehq.org/show_bug.cgi?id=16265
Summary: ActiveX Control Pad installer hangs sometimes on exit; deadlock between LdrShutdownThread and TASK_ExitTask? Product: Wine Version: 1.1.9 Platform: Other URL: http://msdn.microsoft.com/en-us/library/ms968493.aspx OS/Version: other Status: NEW Keywords: download, Installer Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com
A user said that ConvWPT ran in Wine, but gave a very complicated recipe, so I tried simplifying it. Along the way, I noticed that Microsoft's ActiveX Control Pad installer hangs sometimes on exit. Here's how to reproduce:
1) Do "winetricks wsh56", else "winetricks fm20" will fail with dialog "Setup has determined that Microsoft Internet Explorer 3.0 was not detected."
2) Do "winetricks fm20". This will complain "Setup was unable to start DDE communication with the desktop". Click Ignore. (This is probably bug 9159.)
When the installer is done, it sometimes hangs with
err:ntdll:RtlpWaitForCriticalSection section 0x7ef2b3c0 "syslevel.c: Win16Mutex" wait timed out in thread 002f, blocked by 002e, retrying (60 sec) err:ntdll:RtlpWaitForCriticalSection section 0x7efec5e4 "loader.c: loader_section" wait timed out in thread 002e, blocked by 002f, retrying (60 sec)
Using winedbg, I was able to get a backtrace of those threads by pressing ^C and then using the bt command:
Wine-dbg>bt 0x2e Backtrace: =>1 RtlpWaitForCriticalSection+0x2fd(crit=0x7efec5e4) [dlls/ntdll/critsection.c:64] in ntdll 2 RtlEnterCriticalSection+0x4a(crit=<?>) [dlls/ntdll/critsection.c:553] in ntdll 3 LdrShutdownThread+0x49() [dlls/ntdll/loader.c:2160] in ntdll 4 RtlExitUserThread+0x67(status=<?>) [dlls/ntdll/thread.c:628] in ntdll 5 in kernel32 (+0x74ca6) 6 DOSVM_Int21Handler+0x9a17(context=0x7e56638c) [dlls/winedos/int21.c:3192] in winedos 7 DOSVM_CallBuiltinHandler+0x17(context=0x7e56638c, intnum=<?>) [dlls/winedos/interrupts.c:712] in winedos 8 INSTR_CallBuiltinHandler+0x3c(context=0x7e56638c, intnum=<?>) [dlls/kernel32/instr.c:901] in kernel32 9 DOS3Call+0x25(context=0x7e56638c) [dlls/kernel32/instr.c:911] in kernel32 ...
Wine-dbg>bt 0x2f Backtrace: =>1 RtlpWaitForCriticalSection+0x2fd(crit=0x7ef2b3c0) [dlls/ntdll/critsection.c:64] in ntdll 2 RtlEnterCriticalSection+0x4a(crit=<?>) [dlls/ntdll/critsection.c:553] in ntdll 3 _EnterSysLevel+0x7b(lock=0x7ef2b3c0) [dlls/kernel32/syslevel.c:106] in kernel32 4 _EnterWin16Lock+0x20() [dlls/kernel32/syslevel.c:187] in kernel32 5 TASK_ExitTask+0x19() [dlls/kernel32/task.c:564] in kernel32 6 DllMain+0x75(hinst=0x7ee10000, reason=3, reserved=(nil)) [dlls/kernel32/kernel_main.c:212] in kernel32 7 __wine_spec_dll_entry+0x3e(inst=0x7ee10000, reason=<?>, reserved=<?>) [dlls/winecrt0/dll_entry.c:40] in kernel32 8 call_dll_entry_point+0x15() in ntdll 9 MODULE_InitDLL+0xe3(wm=<?>, reason=3, lpReserved=(nil)) [dlls/ntdll/loader.c:912] in ntdll 10 LdrShutdownThread+0x96() [dlls/ntdll/loader.c:2163] in ntdll 11 RtlExitUserThread+0x67(status=<?>) [dlls/ntdll/thread.c:628] in ntdll 12 in kernel32 (+0x74ca6) 13 WINOLDAP_EntryPoint+0x1a2(context=0x7d7b138c) [dlls/kernel32/kernel16.c:207] in kernel32 ...