[Bug 45600] Wargaming Game Center has Russian as default language with WinVer > 'Windows XP' (initial 'explorer' process fails to register/run ShellWindows local COM server in new WINEPREFIX due to incomplete registry data)

WineHQ Bugzilla wine-bugs at winehq.org
Sat Jan 25 07:30:59 CST 2020


https://bugs.winehq.org/show_bug.cgi?id=45600

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
          Component|-unknown                    |programs
         Resolution|---                         |DUPLICATE
            Summary|Wargaming Game Center has   |Wargaming Game Center has
                   |Russian as default language |Russian as default language
                   |                            |with WinVer > 'Windows XP'
                   |                            |(initial 'explorer' process
                   |                            |fails to register/run
                   |                            |ShellWindows local COM
                   |                            |server in new WINEPREFIX
                   |                            |due to incomplete registry
                   |                            |data)

--- Comment #3 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

finally confirming. Took some time to get down to the root cause.

The incorrect locale is just a late manifestation of Wine's broken
bootstrapping procedure when creating a new WINEPREFIX -> bug 41713

The installer is InnoSetup based. Using the '/LOG' parameter to installer
provides a bit more info.

--- snip ---
$ wine ./total_war_arena_install_eu_bs39qvgzadby.exe /LOG
...
2020-01-24 22:04:28.000   Log opened. (Time zone: UTC+01:00)
2020-01-24 22:04:28.000   Setup version: Inno Setup version 5.5.4 (u)
2020-01-24 22:04:28.000   Original Setup EXE:
Z:\home\focht\Downloads\total_war_arena_install_eu_bs39qvgzadby.exe
2020-01-24 22:04:28.000   Setup command line:
/SL5="$4004A,3731534,423424,Z:\home\focht\Downloads\total_war_arena_install_eu_bs39qvgzadby.exe"
/LOG
2020-01-24 22:04:28.000   Windows version: 6.1.7601 SP1  (NT platform: Yes)
2020-01-24 22:04:28.000   64-bit Windows: Yes
2020-01-24 22:04:28.000   Processor architecture: x64
2020-01-24 22:04:28.000   User privileges: Administrative
2020-01-24 22:04:28.001   64-bit install mode: No
2020-01-24 22:04:28.002   Created temporary directory:
C:\users\focht\Temp\is-C1II2.tmp
2020-01-24 22:04:28.007   Windows version (RTL): 6.1.7601
2020-01-24 22:04:28.008   ElevationStats: Elevated=True; ElevationAllowed=False
2020-01-24 22:04:28.009   Failed to read file:
"C:\ProgramData\Wargaming.net\GameCenter\data\wgc_id.dat"
2020-01-24 22:04:28.009   [DAT] Installation id:
DAF94C7A78EE82DD121510CC37ECAF7016460DDF
2020-01-24 22:04:28.009   [SS] Stats initialized. Service url:
http://wgusst-eu.wargaming.net/
2020-01-24 22:04:28.009   [CMD] Registered command : elevation_req
2020-01-24 22:04:28.009   [CMD] Registered command : elevate
2020-01-24 22:04:28.009   [CMD] Registered command : select_dir
...
2020-01-24 22:05:00.185   WGC patch installation complete
2020-01-24 22:05:00.186   [NS] Sending stats request: 6
<http://wgusst-eu.wargaming.net/wgc/client_installation_finished?installation_id=DAF94C7A78EE82DD121510CC37ECAF7016460DDF&vending_id=wgc_production&event_date=2020-01-24+22%3A05%3A00+%2B0100&session_id=53A8A24107D04EE194E9768DB6900CC0&event_sequence_number=5&tracking_id=1550543354421122302&product_version=18.09.00.3034&wgc_application_id=WGC.EU.PRODUCTION&preset_application_id=TWA.EU.PRODUCTION&installation_path=C%3A%5CProgramData%5CWargaming.net%5CGameCenter&transaction_id=D3F4E9CE70234B3FA45A4F0111CB8238>
2020-01-24 22:05:00.186   Adding FW exceptions...
2020-01-24 22:05:00.225   FW operation process finished, code: 0
2020-01-24 22:05:00.225   WGC additional actions complete
2020-01-24 22:05:00.225   [SS] Wating for stats events to be finished
2020-01-24 22:05:00.237   [NS] Remove request: 6
2020-01-24 22:05:00.243   Starting the installation process.
2020-01-24 22:05:00.245   Setting permissions on directory:
C:\ProgramData\Wargaming.net\GameCenter
2020-01-24 22:05:00.245   Creating directory:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Wargaming.net
2020-01-24 22:05:00.246   Setting permissions on directory:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Wargaming.net
2020-01-24 22:05:00.247   Installation process succeeded.
2020-01-24 22:05:00.253   Aborting ssPostInstall... 
2020-01-24 22:05:00.308   Running WGC...
2020-01-24 22:05:00.326   [NS] Sending stats request: 7
<http://wgusst-eu.wargaming.net/wgc/installer_error_occurred?installation_id=DAF94C7A78EE82DD121510CC37ECAF7016460DDF&vending_id=wgc_production&event_date=2020-01-24+22%3A05%3A00+%2B0100&session_id=53A8A24107D04EE194E9768DB6900CC0&event_sequence_number=6&tracking_id=1550543354421122302&product_version=18.09.00.3034&wgc_application_id=WGC.EU.PRODUCTION&preset_application_id=TWA.EU.PRODUCTION&inst_screen_id=5&inst_error_id=15>
2020-01-24 22:05:00.326   Need to restart Windows? No
2020-01-24 22:05:00.334   Deinitializing Setup.
2020-01-24 22:05:00.334   [SS] Cleaning up module...
2020-01-24 22:05:00.334   [SS] Wating for stats events to be finished
2020-01-24 22:05:00.426   [NS] Remove request: 7
2020-01-24 22:05:00.426   [NS] Unloading module...
2020-01-24 22:05:00.427   [NS] All requests stopped
2020-01-24 22:05:00.427   [NS] Http system deinitialized
2020-01-24 22:05:00.527   Log closed.
--- snip ---

Analysing the installer script by using following tools:

* innounp, the Inno Setup Unpacker -> http://innounp.sourceforge.net/
* IFPSTools, tools for working with RemObjects PascalScript files (mainly
disassemble PascalScript) -> https://github.com/Wack0/IFPSTools

--- snip ---
$ wine innounp.exe -m -x -d_unpacked
total_war_arena_install_eu_bs39qvgzadby.exe
...
$ php IFPSTools/DisIFPS.php _unpacked/embedded/CompiledCode.bin
script_disassembly.pas
--- snip ---

This results in a big RemObjects PascalScript disassembly.
The relevant part:

--- snip ---
Functions[911] = exported BOOLEAN RUN_WGC_UNELEVATED()
        pushtype S32 ; StackCount = 1
        pushtype BOOLEAN ; StackCount = 2
        pushtype UnicodeString ; StackCount = 3
        assign Var3, ( String "Running WGC..." )
        call LOG
        pop ; StackCount = 2
        pushtype Pointer ; StackCount = 3
        setptr Var3, Var1
        pushtype TEXECWAIT ; StackCount = 4
        assign Var4, ( U8 0 )
        pushtype S32 ; StackCount = 5
        assign Var5, ( S32 5 )
        pushtype UnicodeString ; StackCount = 6
        assign Var6, ( String "" )
        pushtype UnicodeString ; StackCount = 7
        pushtype UnicodeString ; StackCount = 8
        assign Var8, ( String "" )
        pushvar Var7 ; StackCount = 9
        call GETLAUNCHERARGUMENTS
        pop ; StackCount = 8
        pop ; StackCount = 7
        pushtype UnicodeString ; StackCount = 8
        pushtype WideString ; StackCount = 9
        assign Var9, Global45
        calculate Var9 + ( String "\wgc.exe" )
        assign Var8, Var9
        pop ; StackCount = 8
        pushtype UnicodeString ; StackCount = 9
        assign Var9, ( String "" )
        pushvar Var2 ; StackCount = 10
        call SHELLEXECUTEWITHCHECK
        pop ; StackCount = 9
        pop ; StackCount = 8
        pop ; StackCount = 7
        pop ; StackCount = 6
        pop ; StackCount = 5
        pop ; StackCount = 4
        pop ; StackCount = 3
        pop ; StackCount = 2
        pushtype BOOLEAN ; StackCount = 3
        assign Var3, Var2
        logicalnot Var3
        setflag not Var3
        pop ; StackCount = 2
        jumpflag loc_153
        pushtype S32 ; StackCount = 3
        assign Var3, ( S32 15 )
        pushtype S32 ; StackCount = 4
        assign Var4, ( S32 5 )
        call SS_NOTIFY_INSTALLERERROROCCURRED
        pop ; StackCount = 3
        pop ; StackCount = 2
    loc_153:
        assign RetVal, Var2
        ret

Functions[326] = exported BOOLEAN SHELLEXECUTEWITHCHECK(in UnicodeString
Arg1,in UnicodeString Arg2,in UnicodeString Arg3,in UnicodeString Arg4,in S32
Arg5,in TEXECWAIT Arg6,out S32 Arg7)
        pushtype BOOLEAN ; StackCount = 1
        assign Var1, Global16
        jumpfalse Var1, loc_3e
        pushtype BOOLEAN ; StackCount = 2
        pushvar Var2 ; StackCount = 3
        call ISWINXP
        pop ; StackCount = 2
        logicalnot Var2
        calculate Var1 & Var2
        pop ; StackCount = 1
    loc_3e:
        setflag not Var1
        pop ; StackCount = 0
        jumpflag loc_231
        pushtype BOOLEAN ; StackCount = 1
        pushtype UnicodeString ; StackCount = 2
        pushtype UnicodeString ; StackCount = 3
        assign Var3, ( String "{win}\explorer.exe" )
        pushvar Var2 ; StackCount = 4
        call SAFEEXPANDCONSTANT
        pop ; StackCount = 3
        pop ; StackCount = 2
        compare Var1, Arg2 == Var2
        pop ; StackCount = 1
        jumptrue Var1, loc_d7
        pushtype BOOLEAN ; StackCount = 2
        compare Var2, Arg2 == ( String "explorer.exe" )
        calculate Var1 | Var2
        pop ; StackCount = 1
    loc_d7:
        jumptrue Var1, loc_110
        pushtype BOOLEAN ; StackCount = 2
        compare Var2, Arg2 == ( String "explorer" )
        calculate Var1 | Var2
        pop ; StackCount = 1
    loc_110:
        setflag not Var1
        pop ; StackCount = 0
        jumpflag loc_1a9
        pushtype Pointer ; StackCount = 1
        setptr Var1, Arg7
        pushtype TEXECWAIT ; StackCount = 2
        assign Var2, Arg6
        pushtype S32 ; StackCount = 3
        assign Var3, Arg5
        pushtype UnicodeString ; StackCount = 4
        assign Var4, Arg4
        pushtype UnicodeString ; StackCount = 5
        assign Var5, ( String "" )
        pushtype UnicodeString ; StackCount = 6
        assign Var6, Arg3
        pushtype UnicodeString ; StackCount = 7
        assign Var7, Arg1
        pushvar RetVal ; StackCount = 8
        call SHELLEXECUTEUNELEVATED
        pop ; StackCount = 7
        pop ; StackCount = 6
        pop ; StackCount = 5
        pop ; StackCount = 4
        pop ; StackCount = 3
        pop ; StackCount = 2
        pop ; StackCount = 1
        pop ; StackCount = 0
        jump loc_22c
    loc_1a9:
        pushtype Pointer ; StackCount = 1
        setptr Var1, Arg7
        pushtype TEXECWAIT ; StackCount = 2
        assign Var2, Arg6
        pushtype S32 ; StackCount = 3
        assign Var3, Arg5
        pushtype UnicodeString ; StackCount = 4
        assign Var4, Arg4
        pushtype UnicodeString ; StackCount = 5
        assign Var5, Arg3
        pushtype UnicodeString ; StackCount = 6
        assign Var6, Arg2
        pushtype UnicodeString ; StackCount = 7
        assign Var7, Arg1
        pushvar RetVal ; StackCount = 8
        call SHELLEXECUTEUNELEVATED
        pop ; StackCount = 7
        pop ; StackCount = 6
        pop ; StackCount = 5
        pop ; StackCount = 4
        pop ; StackCount = 3
        pop ; StackCount = 2
        pop ; StackCount = 1
        pop ; StackCount = 0
    loc_22c:
        jump loc_2b4
    loc_231:
        pushtype Pointer ; StackCount = 1
        setptr Var1, Arg7
        pushtype TEXECWAIT ; StackCount = 2
        assign Var2, Arg6
        pushtype S32 ; StackCount = 3
        assign Var3, Arg5
        pushtype UnicodeString ; StackCount = 4
        assign Var4, Arg4
        pushtype UnicodeString ; StackCount = 5
        assign Var5, Arg3
        pushtype UnicodeString ; StackCount = 6
        assign Var6, Arg2
        pushtype UnicodeString ; StackCount = 7
        assign Var7, Arg1
        pushvar RetVal ; StackCount = 8
        call SHELLEXEC
        pop ; StackCount = 7
        pop ; StackCount = 6
        pop ; StackCount = 5
        pop ; StackCount = 4
        pop ; StackCount = 3
        pop ; StackCount = 2
        pop ; StackCount = 1
        pop ; StackCount = 0
    loc_2b4:
        ret
--- snip ---

The installer tries to start 'wgc' (client) as unelevated process after
finishing installation using the well known "ShellExecuteFromExplorer" method.
Also described here:

https://stackoverflow.com/questions/37948064/how-to-launch-non-elevated-administrator-process-from-elevated-administrator-con

Tidbit: Even with the method working in general, Wine's 'explorer.exe' always
runs as elevated process which is wrong as well -> bug 39262 ("DiscordSetup.exe
(.NET 4.5.2 app): Squirrell installer requires being run as unelevated process
('explorer.exe' should run unelevated by default with Vista+ setting)").
Fortunately the client here doesn't check this unlike other apps.

You can also see why 'Windows XP' works, it uses different code path ->
'ShellExecuteExW' and not "ShellExecuteFromExplorer" method.

The parameters, dumped from 'ole' debug channel:

--- snip ---
...
0059:trace:ole:SysAllocStringLen L"Running WGC..."
...
0059:trace:ole:SysAllocStringLen
L"\"C:\\ProgramData\\Wargaming.net\\GameCenter\\wgc.exe\" --install -g
TWA.EU.PRODUCTION at https://wgus-twaeu.wargaming.net/ --setLang -l en
--session-id 77DA8BEB5A864844B974BDF486FC546B --event-sequence-number 6 '"
0059:trace:ole:SysAllocStringLen
L"C:\\ProgramData\\Wargaming.net\\GameCenter\\wgc.exe"
0059:trace:ole:CoCreateInstance (rclsid={9ba05972-f6a8-11cf-a442-00a0c90a8f39},
pUnkOuter=00000000, dwClsContext=00000017,
riid={85cb6900-4d95-11cf-960c-0080c7f4ee85}, ppv=0032F5B4)
0059:trace:ole:CoCreateInstanceEx ({9ba05972-f6a8-11cf-a442-00a0c90a8f39}
00000000 17 00000000 1 0032F51C)
0059:trace:ole:CoGetTreatAsClass
({9ba05972-f6a8-11cf-a442-00a0c90a8f39},0032F4CC)
0059:trace:ole:apartment_addref 5800000059: before = 1
0059:trace:ole:apartment_release 5800000059: after = 1
0059:trace:ole:CoGetClassObject CLSID:
{9ba05972-f6a8-11cf-a442-00a0c90a8f39},IID:
{00000001-0000-0000-c000-000000000046}
0059:trace:ole:apartment_addref 5800000059: before = 1
0059:trace:ole:COMPOBJ_DllList_Add L"C:\\windows\\system32\\ieframe.dll"
...
0059:trace:ole:apartment_getclassobject added new loaded dll
L"C:\\windows\\system32\\ieframe.dll"
0059:trace:ole:apartment_getclassobject calling DllGetClassObject 0757A020
0059:fixme:ieframe:DllGetClassObject {9ba05972-f6a8-11cf-a442-00a0c90a8f39}
{00000001-0000-0000-c000-000000000046} 0032F4C0
0059:err:ole:apartment_getclassobject DllGetClassObject returned error
0x80040111 for dll L"C:\\windows\\system32\\ieframe.dll"
0076:trace:loaddll:load_native_dll Loaded L"C:\\windows\\system32\\rpcrt4.dll"
at 0x250000: PE builtin
0059:warn:ole:CoGetClassObject class {9ba05972-f6a8-11cf-a442-00a0c90a8f39} not
registered in-proc handler
0059:trace:ole:apartment_release 5800000059: after = 1
0059:trace:ole:RPC_GetLocalClassObject
rclsid={9ba05972-f6a8-11cf-a442-00a0c90a8f39},
iid={00000001-0000-0000-c000-000000000046}
0059:trace:ole:RPC_GetLocalClassObject waiting for
L"\\\\.\\pipe\\{9BA05972-F6A8-11CF-A442-00A0C90A8F39}"
0076:trace:loaddll:load_native_dll Loaded L"C:\\windows\\system32\\ole32.dll"
at 0x180000000: PE builtin
0059:trace:ole:create_local_service Attempting to start Local service for
{9ba05972-f6a8-11cf-a442-00a0c90a8f39}
0059:err:ole:create_server class {9ba05972-f6a8-11cf-a442-00a0c90a8f39} not
registered
0059:fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported
0059:err:ole:CoGetClassObject no class object
{9ba05972-f6a8-11cf-a442-00a0c90a8f39} could be created for context 0x17
0059:trace:ole:SysAllocStringLen L"installer_error_occurred"
0059:trace:ole:SysAllocStringLen L"/"
0059:trace:ole:SysAllocStringLen L"http://wgusst-eu.wargaming.net/"
0059:trace:ole:SysAllocStringLen L"http://wgusst-eu.wargaming.net/"
0059:trace:ole:SysAllocStringLen L"wgc/"
0059:trace:ole:SysAllocStringLen (null)
0059:trace:ole:SysAllocStringLen L"installer_error_occurred"
0059:trace:ole:SysAllocStringLen (null)
0059:trace:ole:SysAllocStringLen L"?installation_id="
--- snip ---

Apparently Explorer local COM server is not working at this point which should
handle client requests for 'ShellWindows' object.

The process hiearchy for illustration, don't mind the non-matching pids:

--- snip ---
Wine-dbg>info process

 pid      threads  executable (all id:s are in hex)

 0000002c 1        'total_war_arena_install_eu_bs39qvgzadby.exe'
 00000033 2        \_ 'total_war_arena_install_eu_bs39qvgzadby.tmp'
 0000002e 4        \_ 'explorer.exe'
 0000000e 5        'services.exe'
 00000021 4        \_ 'winedevice.exe'
 00000018 5        \_ 'winedevice.exe'
 00000011 3        \_ 'plugplay.exe'
 00000008 1        'winedbg.exe'
--- snip ---

https://source.winehq.org/git/wine.git/blob/HEAD:/programs/explorer/desktop.c#l2145

--- snip ---
2145 static void shellwindows_init(void)
2146 {
2147     HRESULT hr;
2148 
2149     CoInitialize(NULL);
2150 
2151     shellwindows.IShellWindows_iface.lpVtbl = &shellwindowsvtbl;
2152 
2153     hr = CoRegisterClassObject(&CLSID_ShellWindows,
2154         (IUnknown*)&shellwindows_classfactory.IClassFactory_iface,
2155         CLSCTX_LOCAL_SERVER,
2156         REGCLS_MULTIPLEUSE,
2157         &shellwindows_classfactory.classreg);
2158 
2159     if (FAILED(hr))
2160         WARN("Failed to register ShellWindows object: %08x\n", hr);
2161 }
--- snip ---

Since the unelevated start fails, any subsequent manual run of 'wgc.exe' will
*always* result in Russion locale. I've debugged the client - there is no code
path with different result when 'preferences.xml' does not exist. Locale 'Ru'
is hard-coded into the client ('game_center.dll') as default setting for new
config files.

Coming back to the problem with Explorer local COM server ...
When looking for an easier/faster way to reproduce I came up with this nifty
one liner ;-)

--- snip ---
# run against existing WINEPREFIX
# 9ba05972-f6a8-11cf-a442-00a0c90a8f39 -> CLSID_ShellWindows

$ while true ; do wine cmd.exe /c "echo test >
\\\\.\\pipe\\{9ba05972-f6a8-11cf-a442-00a0c90a8f39}" ; sleep 1 ; done

0034:fixme:ntdll:server_get_file_info Unsupported info class 14
Invalid function.

0036:fixme:ntdll:server_get_file_info Unsupported info class 14
Invalid function.

...
# kill explorer process/local COM server
...
File not found.
--- snip ---

'Invalid function.' -> ok, named pipe can be opened
'File not found.' -> error, named pipe does not exist

If this is run against a newly created WINEPREFIX it will always fail. Just use
some builtin app to keep it from being shut down.  

Trace of WINEPREFIX creation:

--- snip ---
$ WINEDEBUG=+process wineboot

wine: created the configuration directory '/home/focht/.wine'
0009:trace:process:RtlCreateUserProcess
L"\\??\\C:\\windows\\system32\\wineboot.exe" image
L"C:\\windows\\system32\\wineboot.exe" cmdline
L"C:\\windows\\system32\\wineboot.exe --init"
0009:trace:process:get_pe_file_info assuming 64-bit builtin for
L"\\??\\C:\\windows\\system32\\wineboot.exe"
0009:trace:process:RtlCreateUserProcess
L"\\??\\C:\\windows\\system32\\wineboot.exe" pid 000a tid 000b handles 0xc/0x10
...
000b:trace:process:CreateProcessInternalW app
L"C:\\windows\\system32\\services.exe" cmdline
L"C:\\windows\\system32\\services.exe"
000b:trace:process:RtlCreateUserProcess
L"\\??\\C:\\windows\\system32\\services.exe" image
L"C:\\windows\\system32\\services.exe" cmdline
L"C:\\windows\\system32\\services.exe"
000b:trace:process:get_pe_file_info assuming 64-bit builtin for
L"\\??\\C:\\windows\\system32\\services.exe"
000b:trace:process:RtlCreateUserProcess
L"\\??\\C:\\windows\\system32\\services.exe" pid 000c tid 000d handles
0x2c/0x30
000b:trace:process:CreateProcessInternalW started process pid 000c tid 000d
...
000b:trace:process:CreateProcessInternalW app
L"C:\\windows\\system32\\rundll32.exe" cmdline
L"C:\\windows\\system32\\rundll32.exe setupapi,InstallHinfSection
DefaultInstall 128
\\\\?\\Z:\\home\\focht\\projects\\wine\\mainline-install-x86_64\\bin\\..\\share\\wine\\wine.inf"
000b:trace:process:RtlCreateUserProcess
L"\\??\\C:\\windows\\system32\\rundll32.exe" image
L"C:\\windows\\system32\\rundll32.exe" cmdline
L"C:\\windows\\system32\\rundll32.exe setupapi,InstallHinfSection
DefaultInstall 128
\\\\?\\Z:\\home\\focht\\projects\\wine\\mainline-install-x86_64\\bin\\..\\share\\wine\\wine.inf"
000b:trace:process:get_pe_file_info assuming 64-bit builtin for
L"\\??\\C:\\windows\\system32\\rundll32.exe"
000b:trace:process:RtlCreateUserProcess
L"\\??\\C:\\windows\\system32\\rundll32.exe" pid 000f tid 0010 handles
0x30/0x34
000b:trace:process:CreateProcessInternalW started process pid 000f tid 0010
...
000b:trace:process:CreateProcessInternalW app
L"C:\\windows\\system32\\explorer.exe" cmdline
L"C:\\windows\\system32\\explorer.exe /desktop"
000b:trace:process:RtlCreateUserProcess
L"\\??\\C:\\windows\\system32\\explorer.exe" image
L"C:\\windows\\system32\\explorer.exe" cmdline
L"C:\\windows\\system32\\explorer.exe /desktop"
000b:trace:process:get_pe_file_info assuming 64-bit builtin for
L"\\??\\C:\\windows\\system32\\explorer.exe"
000b:trace:process:RtlCreateUserProcess
L"\\??\\C:\\windows\\system32\\explorer.exe" pid 0011 tid 0012 handles
0x78/0x7c
000b:trace:process:CreateProcessInternalW started process pid 0011 tid 0012
...
0010:trace:process:CreateProcessInternalW app
L"C:\\windows\\system32\\explorer.exe" cmdline
L"C:\\windows\\system32\\explorer.exe /desktop"
0010:trace:process:RtlCreateUserProcess
L"\\??\\C:\\windows\\system32\\explorer.exe" image
L"C:\\windows\\system32\\explorer.exe" cmdline
L"C:\\windows\\system32\\explorer.exe /desktop"
0010:trace:process:get_pe_file_info assuming 64-bit builtin for
L"\\??\\C:\\windows\\system32\\explorer.exe"
0010:trace:process:RtlCreateUserProcess
L"\\??\\C:\\windows\\system32\\explorer.exe" pid 0013 tid 0014 handles
0x4c/0x50
0010:trace:process:CreateProcessInternalW started process pid 0013 tid 0014
...

...
0012:err:ole:marshal_object couldn't get IPSFactory buffer for interface
{00000131-0000-0000-c000-000000000046}
0012:err:ole:marshal_object couldn't get IPSFactory buffer for interface
{6d5140c1-7436-11ce-8034-00aa006009fa}
0012:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub,
hres=0x80004002
0012:err:ole:CoMarshalInterface Failed to marshal the interface
{6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
0012:err:ole:get_local_server_stream Failed: 80004002
...

...
0014:err:ole:marshal_object couldn't get IPSFactory buffer for interface
{00000131-0000-0000-c000-000000000046}
0014:err:ole:marshal_object couldn't get IPSFactory buffer for interface
{6d5140c1-7436-11ce-8034-00aa006009fa}
0014:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub,
hres=0x80004002
0014:err:ole:CoMarshalInterface Failed to marshal the interface
{6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
0014:err:ole:get_local_server_stream Failed: 80004002
...

...
0014:warn:ole:CoGetPSClsid No PSFactoryBuffer object is registered for IID
{00000131-0000-0000-c000-000000000046}
....
0014:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub,
hres=0x80004002
0014:err:ole:CoMarshalInterface Failed to marshal the interface
{6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
0014:trace:ole:CoMarshalInterface completed with hr 0x80004002
0014:err:ole:get_local_server_stream Failed: 80004002
0014:trace:ole:apartment_release 1300000014: after = 1
0014: terminate_process( handle=0000, exit_code=0 )
0014: terminate_process() = 0 { self=1 }
0014:trace:ole:DllMain 00000000006D0000 0x0 0000000000000001
0014: terminate_process( handle=ffffffff, exit_code=0 )
0014: terminate_process() = 0 { self=1 }
0014: *killed* exit_code=0
0012: *wakeup* signaled=0
0013: *process killed*
0010: *wakeup* signaled=0
0012: get_message( flags=04ff0001, get_win=00000000, get_first=00000000,
get_last=ffffffff, hw_id=00000000, wake_mask=00000040, changed_mask=000004ff )
0012: get_message() = 0 { win=00010020, msg=00000210, wparam=00000002,
lparam=00020050, type=6, x=0, y=0, time=2f3e3012, active_hooks=80000000,
total=0, data={} }
0010: close_handle( handle=0054 )
0010: close_handle() = 0
0010: close_handle( handle=0050 )
0010: close_handle() = 0
0012: get_thread_input( tid=0000 )
0012: get_thread_input() = 0 { focus=00010044, capture=00000000,
active=00010044, foreground=00010044, menu_owner=00000000, move_size=00000000,
caret=00000000, cursor=00000000, show_count=0, rect={0,0;0,0} }
0010: get_desktop_window( force=1 )
0010: get_desktop_window() = 0 { top_window=00010020, msg_window=00010026 }
0012: set_window_info( flags=0000, is_unicode=0, handle=00010044,
style=00000000, ex_style=00000000, id=00000000, instance=00000000,
user_data=00000000, extra_offset=-1, extra_size=0, extra_value=00000000 )
0012: set_window_info() = 0 { old_style=9cc009c4, old_ex_style=00010101,
old_instance=140000000, old_user_data=00000000, old_extra_value=00000000,
old_id=00000000 } 
--- snip ---

One 'explorer' process is started by 'wineboot', the other one by 'rundll32'.
Both fail to create the COM servers because the needed registry data
(proxies/marshalling) doesn't exist at this point. The second instance
terminates after a short time, while the original 'explorer' process still
runs. It pumps messages but it can't serve any COM clients.

$ sha1sum total_war_arena_install_eu_bs39qvgzadby.exe
6bd7be004a356bb5af526bd0e647d22b547a76b3 
total_war_arena_install_eu_bs39qvgzadby.exe

$ du -sh total_war_arena_install_eu_bs39qvgzadby.exe 
4.7M    total_war_arena_install_eu_bs39qvgzadby.exe

$ wine --version
wine-5.0-144-g9a9a1821a3

Regards

*** This bug has been marked as a duplicate of bug 41713 ***

-- 
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