https://bugs.winehq.org/show_bug.cgi?id=45449
Bug ID: 45449 Summary: Add diagnostic 'mscoree.dll.CorGetSvc' stub (NGEN client) to hint at broken Microsoft .NET Frameworks installation (Wine-Mono not uninstalled and 'mscoree.dll' placeholders not removed prior install) Product: Wine Version: 3.12 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: mscoree Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
continuation of bug 45333 (diagnostics for the NGEN server side).
The client side 'ngen.exe' calls unimplemented 'mscoree.dll.CorGetSvc'.
NOTE: MSI (CA) server is currently broken/regressed for 64-bit WINEPREFIXes, so a broken .NET installation can't be tested there.
Prepare a broken 32-bit WINEPREFIX:
--- snip --- $ wineserver -k $ rm -rf .wine $ export WINEARCH=win32 $ wineboot
$ wine uninstaller --list {BB9BDB97-C247-4F20-B710-8B6765F67105}|||Wine Gecko (32-bit) {E45D8920-A758-4088-B6C6-31DBB276992E}|||Wine Mono
$ wine uninstaller --remove {E45D8920-A758-4088-B6C6-31DBB276992E}
# to be really sure 'mscoree.dll' won't get updated -> keeps Wine's placeholder $ winetricks win7
# run .NET 4.0 installer without 'winetricks' $ wine ./dotNetFx40_Full_x86_x64.exe ...
# really check if placeholder is still there $ winedump .wine/drive_c/windows/system32/mscoree.dll Contents of .wine/drive_c/windows/system32/mscoree.dll: 5236 bytes
*** This is a Wine fake DLL ***
File Header Machine: 014C (i386) Number of Sections: 3 TimeDateStamp: 00000000 (Thu Jan 1 01:00:00 1970) offset 104 PointerToSymbolTable: 00000000 NumberOfSymbols: 00000000 SizeOfOptionalHeader: 00E0 Characteristics: 2022 EXECUTABLE_IMAGE LARGE_ADDRESS_AWARE DLL ... --- snip ---
Test by trigger .NET GAC update:
--- snip --- $ wine "c:\windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe" update 0012:fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub 0012:fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub 0016:fixme:service:svcctl_ChangeServiceConfig2W SERVICE_CONFIG_FAILURE_ACTIONS not implemented: period 86400 msg (null) cmd (null) 0019:fixme:process:SetProcessShutdownParameters (00000380, 00000000): partial stub. 0019:err:winediag:CorIsLatestSvc If this function is called, it is likely the result of a broken .NET installation 0019:fixme:advapi:RegisterEventSourceW ((null),L".NET Runtime Optimization Service"): stub 0019:fixme:advapi:ReportEventW (0xcafe4242,0x0001,0x0000,0x0000044f,(nil),0x0001,0x00000000,0x76f9d0,(nil)): stub 0019:err:eventlog:ReportEventW L".NET Runtime Optimization Service (clr_optimization_v4.0.30319_32) - Tried to start a service that wasn't the latest version of CLR Optimization service. Will shutdown\n" 0019:fixme:advapi:DeregisterEventSource (0xcafe4242) stub 0009:fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub 0009:fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub wine: Call from 0x7b447132 to unimplemented function mscoree.dll.CorGetSvc, aborting Unknown exception --- snip ---
That one is actually documented:
https://github.com/dotnet/coreclr/blob/master/src/inc/mscorsvc.idl#L21
--- snip --- #pragma midl_echo("STDAPI CorGetSvc(IUnknown **pIUnknown);") --- snip ---
With a stub added, returning default 'CLR_E_SHIM_RUNTIMEEXPORT':
--- snip --- 0009:Call mscoree.CorGetSvc(0033f9f8) ret=1000df20 0009:fixme:mscoree:CorGetSvc stub(0x33f9f8)! 0009:Ret mscoree.CorGetSvc() retval=80131701 ret=1000df20 0009:Call KERNEL32.GetLastError() ret=1000f4c7 0009:Ret KERNEL32.GetLastError() retval=000000b7 ret=1000f4c7 ... 0009:Call KERNEL32.GetLastError() ret=1000f417 0009:Ret KERNEL32.GetLastError() retval=000000b7 ret=1000f417 ... 0009:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,0033f9a4) ret=79084c0f 0009:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b446fe6 ip=7b446fe6 tid=0009 0009:trace:seh:raise_exception info[0]=19930520 0009:trace:seh:raise_exception info[1]=0033f9e4 0009:trace:seh:raise_exception info[2]=1001a760 0009:trace:seh:raise_exception eax=7b4356b1 ebx=00000000 ecx=00000000 edx=0033f990 esi=0033f990 edi=0033f950 0009:trace:seh:raise_exception ebp=0033f928 esp=0033f8c4 cs=330023 ds=33002b es=f7bc002b fs=f7bc0063 gs=f7bc006b flags=00000212 0009:trace:seh:call_stack_handlers calling handler at 0x10018276 code=e06d7363 flags=1 ... Failed to find a required export in the runtime. (Exception from HRESULT: 0x80131701) ... --- snip ---
$ wine --version wine-3.12-110-g414fe80aeb
Regards
https://bugs.winehq.org/show_bug.cgi?id=45449
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, Installer Summary|Add diagnostic |Add diagnostic |'mscoree.dll.CorGetSvc' |'mscoree.dll.CorGetSvc' |stub (NGEN client) to hint |stub (NGEN client) to hint |at broken Microsoft .NET |at broken Microsoft .NET |Frameworks installation |Frameworks installation |(Wine-Mono not uninstalled |(Wine-Mono not uninstalled |and 'mscoree.dll' |and/or 'mscoree.dll' |placeholders not removed |placeholders not removed |prior install) |prior install) URL| |https://www.microsoft.com/e | |n-us/download/details.aspx? | |id=17718
https://bugs.winehq.org/show_bug.cgi?id=45449
--- Comment #1 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, still present.
--- snip --- $ wineserver -k $ rm -rf ~/.wine $ export WINEARCH=win32 $ wineboot wine: created the configuration directory '/home/focht/.wine' ...
$ wine uninstaller --list {BB9BDB97-C247-4F20-B710-8B6765F67105}|||Wine Gecko (32-bit) {155BF5B7-B094-5653-921D-362F8481943D}|||Wine Mono Runtime {A183C2D2-A80E-5701-9A35-36B46C1BEA4D}|||Wine Mono Windows Support
$ wine uninstaller --remove {155BF5B7-B094-5653-921D-362F8481943D}
$ winetricks win7
$ wine ~/.cache/winetricks/dotnet40/dotNetFx40_Full_x86_x64.exe ...
$ winedump .wine/drive_c/windows/system32/mscoree.dll Contents of .wine/drive_c/windows/system32/mscoree.dll: 925904 bytes
*** This is a Wine builtin DLL ***
File Header Machine: 014C (i386) Number of Sections: 19 TimeDateStamp: 5D21CA05 (Sun Jul 7 12:31:33 2019) offset 136 PointerToSymbolTable: 000BF800 NumberOfSymbols: 00001136 SizeOfOptionalHeader: 00E0 Characteristics: 2106 EXECUTABLE_IMAGE LINE_NUMS_STRIPPED 32BIT_MACHINE DLL
Optional Header (32bit) Magic 0x10B 267 linker version 2.29 size of code 0x16600 91648 size of initialized data 0x34a00 215552 size of uninitialized data 0x600 1536 entrypoint RVA 0x13e0 5088 base of code 0x1000 4096 base of data 0x18000 98304 image base 0x643c0000 1681653760 section align 0x1000 4096 file align 0x200 512 required OS version 4.00 image version 1.00 subsystem version 4.00 Win32 Version 0x0 0 size of image 0xca000 827392 size of headers 0x600 1536 checksum 0xecaab 969387 Subsystem 0x3 (Windows CUI) DLL characteristics: 0x0 stack reserve size 0x200000 2097152 stack commit size 0x1000 4096 heap reserve size 0x100000 1048576 heap commit size 0x1000 4096 loader flags 0x0 0 RVAs & sizes 0x10 16 ...
$ wine "c:\windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe" update 0009:fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub 0009:fixme:heap:RtlSetHeapInformation (nil) 1 (nil) 0 stub wine: Call from 0x7b44f09b to unimplemented function mscoree.dll.CorGetSvc, aborting Unknown exception --- snip ---
$ wine --version wine-4.12.1
Regards
https://bugs.winehq.org/show_bug.cgi?id=45449
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |6e3d68b14120563fd584fe9c5a2 | |7885f51e7ae66 Resolution|--- |FIXED Status|NEW |RESOLVED
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello folks,
this is fixed by commit https://source.winehq.org/git/wine.git/commitdiff/6e3d68b14120563fd584fe9c5a... ("mscoree: Add diagnostic CorGetSvc stub.")
Thanks Vincent
Test with broken .NET install:
--- snip --- $ wineserver -k $ rm -rf .wine $ export WINEARCH=win32 $ wineboot
$ wine uninstaller --list {BB9BDB97-C247-4F20-B710-8B6765F67105}|||Wine Gecko (32-bit) {95E1A5A7-9C47-5B8F-94C7-03C26A544072}|||Wine Mono Runtime {C1E530E6-B87C-5982-8173-5417B92E5F56}|||Wine Mono Windows Support
$ wine uninstaller --remove {95E1A5A7-9C47-5B8F-94C7-03C26A544072}
$ winetricks win7
$ (cd .cache/winetricks/dotnet40 && wine ./dotNetFx40_Full_x86_x64.exe)
$ winedump .wine/drive_c/windows/system32/mscoree.dll Contents of .wine/drive_c/windows/system32/mscoree.dll: 871574 bytes
*** This is a Wine builtin DLL ***
File Header Machine: 014C (i386) Number of Sections: 16 TimeDateStamp: 5D4D1CED (Fri Aug 9 09:12:45 2019) offset 136 PointerToSymbolTable: 000B5600 NumberOfSymbols: 00000EED SizeOfOptionalHeader: 00E0 Characteristics: 2106 EXECUTABLE_IMAGE LINE_NUMS_STRIPPED 32BIT_MACHINE DLL ...
$ wine "c:\windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe" update 0009:err:winediag:CorGetSvc If this function is called, it is likely the result of a broken .NET installation Exception from HRESULT: 0x80004001 (E_NOTIMPL) --- snip ---
$ wine --version wine-4.13-109-g6e3d68b141
Regards
https://bugs.winehq.org/show_bug.cgi?id=45449
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #3 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 4.14.
https://bugs.winehq.org/show_bug.cgi?id=45449
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |4.0.x
https://bugs.winehq.org/show_bug.cgi?id=45449
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|4.0.x |---
--- Comment #4 from Michael Stefaniuc mstefani@winehq.org --- Removing the 4.0.x milestone from bug fixes included in 4.0.3.
https://bugs.winehq.org/show_bug.cgi?id=45449
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|https://www.microsoft.com/e |https://web.archive.org/web |n-us/download/details.aspx? |/20100818223107/http://down |id=17718 |load.microsoft.com/download | |/9/5/A/95A9616B-7A37-4AF6-B | |C36-D6EA96C8DAAE/dotNetFx40 | |_Full_x86_x64.exe