https://bugs.winehq.org/show_bug.cgi?id=45600
Bug ID: 45600 Summary: Wargaming Game Center has Russian as default language Product: Wine Version: 3.13 Hardware: x86 URL: http://redirect.wargaming.net/WGC/Wargaming_Game_Cente r_Install_TWA_EU.exe OS: Linux Status: NEW Keywords: download Severity: trivial Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: dark.shadow4@web.de Distribution: ---
Despite not having Russian as language anywhere an my PC, when run under wine it picks Russian as default language. On my VM it picks the system language properly.
https://bugs.winehq.org/show_bug.cgi?id=45600
--- Comment #1 from Fabian Maurer dark.shadow4@web.de --- Created attachment 62033 --> https://bugs.winehq.org/attachment.cgi?id=62033 wine log
Just noticed, "winetricks -q ie8" works around the issue. Maybe it's because the installation doesn't finish properly?
https://bugs.winehq.org/show_bug.cgi?id=45600
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello Fabian,
confirming.
--- quote --- Just noticed, "winetricks -q ie8" works around the issue. Maybe it's because the installation doesn't finish properly? --- quote ---
I don't know what's wrong with your system but on my machine the installer works just fine. The reason why 'winetricks -q ie8' works around is because the recipe changes the Windows version of the WINEPREFIX from default 'Windows 7' to 'Windows XP'.
To test, set 'Windows XP' and reinstall using 'setup.exe' from launcher directory. You will get English language setting by default.
One can also force/override locale regardless of Windows version using client command line interface:
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files (x86)/Wargaming.net/GameCenter
# English $ wine ./wgc.exe --setLang -l en
# German $ wine ./wgc.exe --setLang -l de --- snip ---
Afterwards 'preferences.xml' has it permanently (no need for 'setLang')
--- snip --- <?xml version="1.0" encoding="utf-8"?> <protocol version="3.9" name="preferences"> <application> ... <localization_manager> <current_localization>en</current_localization> </localization_manager> --- snip ---
Regards
https://bugs.winehq.org/show_bug.cgi?id=45600
Anastasius Focht focht@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@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-admi...
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@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....
--- 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 ***
https://bugs.winehq.org/show_bug.cgi?id=45600
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #4 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Closing Duplicate.