[Bug 45449] New: 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)

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Jul 13 17:39:35 CDT 2018


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 at winehq.org
          Reporter: focht at 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

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list