https://bugs.winehq.org/show_bug.cgi?id=39270
Bug ID: 39270 Summary: Microsoft .NET 2.x/3.x Framework: "mscorsvw" compile worker hangs occasionally while generating native images from assemblies in GAC (heap lock timeout reported) Product: Wine Version: 1.7.51 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
while revisiting bug 36628 I forgot to install .NET 3.x via 'winetricks' which is a required prerequisite for GFWL.
The GFWL installer executed .NET Framework 2.0 and 3.0 installers in order. At one point I finally caught one of these mysterious 'mscorsvw' compile worker process shutdown races that are still happening once in a while when NGENing assemblies into GAC.
See bug 30162 ("Microsoft .NET 2.0 Framework: "mscorsvw" compile worker hangs sometimes while generating native images from assemblies in GAC (loader section block reported)") - except it's not the loader lock but heap here.
Normal process tree:
--- snip --- Wine-dbg>info process pid threads executable (all id:s are in hex) 00000023 4 'explorer.exe' 0000000e 6 'services.exe' 000000d7 4 _ 'mscorsvw.exe' 0000001a 3 _ 'plugplay.exe' 00000012 4 _ 'winedevice.exe' 00000008 1 'setup.exe' 0000002c 6 _ 'msiexec.exe' 00000028 2 _ 'gfwlivesetup.exe' 0000000c 1 _ 'GFWLIVESetupStub.exe' 0000003b 2 _ 'dotnetfx3.exe' 0000003e 3 _ 'setup.exe' 000000de 5 _ 'ngen.exe' 000000e0 13 _ 'mscorsvw.exe' --- snip ---
Symptoms:
* critical section timeouts printed in terminal * orphaned 'mscorsvw' compile worker process
--- snip --- err:ntdll:RtlpWaitForCriticalSection section 0x110060 "/home/focht/projects/wine/wine.repo/src/dlls/ntdll/heap.c: main process heap section" wait timed out in thread 007d, blocked by 005c, retrying (60 sec) --- snip ---
Orphaned 'mscorsvw.exe' (wpid 0x9d):
--- snip --- Wine-dbg>info process pid threads executable (all id:s are in hex) 0000009d 1 'mscorsvw.exe' 00000023 4 'explorer.exe' 0000000e 6 'services.exe' 000000d7 4 _ 'mscorsvw.exe' 0000001a 3 _ 'plugplay.exe' 00000012 4 _ 'winedevice.exe' 00000008 1 'setup.exe' 0000002c 6 _ 'msiexec.exe' 00000028 2 _ 'gfwlivesetup.exe' 0000000c 1 _ 'GFWLIVESetupStub.exe' 0000003b 2 _ 'dotnetfx3.exe' 0000003e 2 _ 'setup.exe' --- snip ---
--- snip --- 11600 ./setup.exe 11603 /home/focht/projects/wine/wine.repo/install/bin/wineserver 11609 C:\windows\system32\services.exe 11613 C:\windows\system32\winedevice.exe MountMgr 11621 C:\windows\system32\plugplay.exe 11630 C:\windows\system32\explorer.exe /desktop 11680 MSIEXEC.EXE /i d:\RESIDENT EVIL 5.msi TRANSFORMS=1033.MST SETUPEXEDIR... 11718 d:\redist\gfwlivesetup.exe /q 11722 c:\d8befac01b420b330b\GFWLIVESetupStub.exe /q 11739 pkg\dotnetfx3.exe /norestart /qb 11742 c:\584a7a7d10077d6603\setup.exe /norestart /qb 11966 C:\windows\Microsoft.NET\Framework\v2.0.50727\mscorsvw.exe --- snip ---
--- snip --- Wine-dbg>info thread process tid prio (all id:s are in hex) ... 00000028 gfwlivesetup.exe 0000000d 0 00000027 0 0000000c GFWLIVESetupStub.exe 00000016 0 000000d7 mscorsvw.exe 000000dd 0 000000dc 0 000000db 0 000000d8 0 0000009d (D) C:\windows\Microsoft.NET\Framework\v2.0.50727\mscorsvw.exe 0000007d 0 <== 000000b7 setup.exe 000000c1 0 000000bc 0 ...
Backtracing for thread 007d in process 009d (C:\windows\Microsoft.NET\Framework\v2.0.50727\mscorsvw.exe):
Backtrace: =>0 0xf77a6c10 __kernel_vsyscall+0x10() in [vdso].so (0x00000000) 1 0xf74a1dc7 syscall+0x26() in libc.so.6 (0x00000000) 2 0x7bc4b2a4 futex_wait+0x3f(addr=0x110070, val=0, timeout=0x33f3c4) [/home/focht/projects/wine/wine.repo/src/dlls/ntdll/critsection.c:69] in ntdll (0x0033f3a8) 3 0x7bc4b3ae fast_wait+0x40(crit=0x110060, timeout=0x3c) [/home/focht/projects/wine/wine.repo/src/dlls/ntdll/critsection.c:108] in ntdll (0x0033f3d8) 4 0x7bc4b509 wait_semaphore+0x24(crit=0x110060, timeout=0x3c) [/home/focht/projects/wine/wine.repo/src/dlls/ntdll/critsection.c:229] in ntdll (0x0033f518) 5 0x7bc4b9ad RtlpWaitForCriticalSection+0x128(crit=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/ntdll/critsection.c:452] in ntdll (0x0033f5d8) 6 0x7bc4bc88 RtlEnterCriticalSection+0xd0(crit=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/ntdll/critsection.c:566] in ntdll (0x0033f618) 7 0x7bc61f10 RtlAllocateHeap+0xfd(heap=<couldn't compute location>, flags=<couldn't compute location>, size=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/ntdll/heap.c:1675] in ntdll (0x0033f6a8) 8 0x7bc866aa RtlAnsiStringToUnicodeString+0x83(uni=<couldn't compute location>, ansi=<couldn't compute location>, doalloc=1) [/home/focht/projects/wine/wine.repo/src/dlls/ntdll/rtlstr.c:689] in ntdll (0x0033f708) 9 0x7ec6878c RegSetValueExA+0x158(hkey=<couldn't compute location>, name=<couldn't compute location>, reserved=<couldn't compute location>, type=<couldn't compute location>, data=<couldn't compute location>, count=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/advapi32/registry.c:1294] in advapi32 (0x0033f768) 10 0x7d6efa68 MSACM_WriteCache+0x7e(padid=0x5060138) [/home/focht/projects/wine/wine.repo/src/dlls/msacm32/internal.c:262] in msacm32 (0x0033f7b8) 11 0x7d6f0ff6 MSACM_UnregisterAllDrivers+0x22() [/home/focht/projects/wine/wine.repo/src/dlls/msacm32/internal.c:804] in msacm32 (0x0033f7e8) 12 0x7d6f1b2c DllMain+0xbb(hInstDLL=<couldn't compute location>, fdwReason=<couldn't compute location>, lpvReserved=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/msacm32/msacm32_main.c:57] in msacm32 (0x0033f828) 13 0x7d6f6afd __wine_spec_dll_entry+0x64(inst=<couldn't compute location>, reason=<couldn't compute location>, reserved=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/winecrt0/dll_entry.c:40] in msacm32 (0x0033f868) 14 0x7bc640aa call_dll_entry_point+0x15() in ntdll (0x0033f898) 15 0x7bc665c1 MODULE_InitDLL+0x1ea(wm=0x3ea5c60, reason=0, lpReserved=0x1) [/home/focht/projects/wine/wine.repo/src/dlls/ntdll/loader.c:1091] in ntdll (0x0033f9f8) 16 0x7bc66c08 process_detach+0x88() [/home/focht/projects/wine/wine.repo/src/dlls/ntdll/loader.c:1260] in ntdll (0x0033fa28) 17 0x7bc6a77c LdrShutdownProcess+0x5d() [/home/focht/projects/wine/wine.repo/src/dlls/ntdll/loader.c:2702] in ntdll (0x0033fa58) 18 0x7bc6a7c0 RtlExitUserProcess+0x41(status=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/src/dlls/ntdll/loader.c:2714] in ntdll (0x0033fa78) 19 0x7b872fda ExitProcess+0x11() in kernel32 (0x0033fa94) 20 0x00000000 (0x0033fa94) 21 0x79f96d9c in mscorwks (+0x126d9b) (0x0033fb2c) --- snip ---
Thread 0x5c is already gone with heap lock held. Unfortunately not reliably reproducible for me - kind of trying to hit the jackpot.
$ wine --version wine-1.7.51-102-ga7e294c
Regards