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