[Bug 39663] GOG Galaxy client 1.x hangs or reports ' Something went wrong during DeelevateStrategy' error in Win7 mode ( GOG Galaxy service needs wtsapi32.WTSQueryUserToken implementation)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Aug 20 13:00:18 CDT 2017


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |download
            Summary|GOG Galaxy slow to start    |GOG Galaxy client 1.x hangs
                   |(20 second delay)           |or reports 'Something went
                   |                            |wrong during
                   |                            |DeelevateStrategy'  error
                   |                            |in Win7 mode (GOG Galaxy
                   |                            |service needs
                   |                            |wtsapi32.WTSQueryUserToken
                   |                            |implementation)
                 CC|                            |focht at gmx.net

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

please don't mix in different issues in one bug report!

Since it has a working Wine-Staging patchset for 'wtsapi32.WTSQueryUserToken'
insufficiency lets limit it for that issue.

All other issues caused by MS VC++ runtime and gdiplus insufficiencies or
broken WINEPREFIXes are obsolete and don't belong here.

Relevant part of trace log from GOG Galaxy client v1.2

0009: -> GOG client process
0035: -> GOG service process

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/GOG Galaxy

$ WINEDEBUG=+tid,+seh,+relay,+service wine ./GalaxyClient.exe >>log.txt 2>&1
...
0009:Call shell32.IsUserAnAdmin() ret=0040f307
0009:Call advapi32.OpenProcessToken(ffffffff,00000008,0033f4bc) ret=7e7d3c6f
0009:Ret  advapi32.OpenProcessToken() retval=00000001 ret=7e7d3c6f
0009:Call
advapi32.GetTokenInformation(00000108,00000002,00000000,00000000,0033f4b8)
ret=7e7d3c96
0009:Ret  advapi32.GetTokenInformation() retval=00000000 ret=7e7d3c96
0009:Call
advapi32.GetTokenInformation(00000108,00000002,00176ac0,000000dc,0033f4b8)
ret=7e7d3d23
0009:Ret  advapi32.GetTokenInformation() retval=00000001 ret=7e7d3d23
0009:Call KERNEL32.CloseHandle(00000108) ret=7e7d3d6f
0009:Ret  KERNEL32.CloseHandle() retval=00000001 ret=7e7d3d6f
0009:Call
advapi32.AllocateAndInitializeSid(0033f4c2,00000002,00000020,00000220,00000000,00000000,00000000,00000000,00000000,00000000,0033f4b4)
ret=7e7d3d97
0009:Ret  advapi32.AllocateAndInitializeSid() retval=00000001 ret=7e7d3d97
0009:Call advapi32.EqualSid(00177258,00176afc) ret=7e7d3de5
0009:Ret  advapi32.EqualSid() retval=00000000 ret=7e7d3de5
0009:Call advapi32.EqualSid(00177258,00176b08) ret=7e7d3de5
0009:Ret  advapi32.EqualSid() retval=00000000 ret=7e7d3de5
0009:Call advapi32.EqualSid(00177258,00176b14) ret=7e7d3de5
0009:Ret  advapi32.EqualSid() retval=00000000 ret=7e7d3de5
0009:Call advapi32.EqualSid(00177258,00176b20) ret=7e7d3de5
0009:Ret  advapi32.EqualSid() retval=00000000 ret=7e7d3de5
0009:Call advapi32.EqualSid(00177258,00176b2c) ret=7e7d3de5
0009:Ret  advapi32.EqualSid() retval=00000001 ret=7e7d3de5
0009:Call advapi32.FreeSid(00177258) ret=7e7d3e0f
0009:Ret  advapi32.FreeSid() retval=00000000 ret=7e7d3e0f
0009:Ret  shell32.IsUserAnAdmin() retval=00000001 ret=0040f307 
...
0009:Call KERNEL32.GetVersionExW(0033f400) ret=0052ded0
0009:Ret  KERNEL32.GetVersionExW() retval=00000001 ret=0052ded0
...
0009:Call KERNEL32.OpenMutexA(00100000,00000000,009a0838
"Global\\clientUpdaterSingleInstanceMutexName") ret=00438dd2 
...
0009:Call
ucrtbase.__stdio_common_vsprintf(00000006,00000000,0033b330,00004000,0077ed00
"Requesting service to run process: %s, with arguments: %s.",00000000,0033f360)
ret=0052ea04 
...
0009:Call advapi32.OpenServiceW(00176af0,0099ec98
L"GalaxyClientService",00000010) ret=0064ae47 
...
0014:Call KERNEL32.CreateProcessW(00000000,0011c780 L"\"C:\\Program Files\\GOG
Galaxy\\GalaxyClientService.exe\"",00000000,00000000,00000000,00000400,00440000,00000000,0064e41c,0064e460)
ret=7ed6c56b
...
0014:Ret  KERNEL32.CreateProcessW() retval=00000001 ret=7ed6c56b
...
0035:Call
ucrtbase.__stdio_common_vsprintf(00000006,00000000,00c2a450,00004000,004388b4
"Received LaunchElevatedRequest %s",00000000,00c2e480) ret=0040f5a4 
...
0035:Call wtsapi32.WTSQueryUserToken(00000001,00c2e2a8) ret=0040d85a
0035:fixme:wtsapi:WTSQueryUserToken 1 0xc2e2a8
0035:Ret  wtsapi32.WTSQueryUserToken() retval=00000000 ret=0040d85a 
...
0035:Call
ucrtbase.__stdio_common_vsprintf(00000006,00000000,00c2a1f0,00004000,00438df8
"Couldn't get query user token, error code %d",00000000,00c2e220) ret=0040f5a4 
...
0035:Call
ucrtbase.__stdio_common_vsprintf(00000006,00000000,00c2a450,00004000,004388d8
"LaunchElevatedRequest complete: %d",00000000,00c2e480) ret=0040f5a4 
...
0035:Call
ucrtbase.__stdio_common_vsprintf(00000006,00000000,00c2a354,00004000,0043b800
"Sending response of type %u [Sequence Number: %u], rseq %u, size %u (bytes
sent: %d), completed OK",00000000,00c2e384) ret=0040f5a4 
...
0009:Call
ucrtbase.__stdio_common_vsprintf(00000006,00000000,003399fc,00004000,0077eb90
"Sending data for run process request to service complete",00000000,0033da2c)
ret=0052ea04 
...
0035:Call
ucrtbase.__stdio_common_vsprintf(00000006,00000000,00c2a454,00004000,004388fc
"LaunchElevatedRequest response sent",00000000,00c2e484) ret=0040f5a4 
...
--- snip ---

'GalaxyClientService.log':

--- snip ---
2017-08-20 11:50:20.607 [Information][ (0)]: Log started. Application version:
1.2.17.9 (2017-07-27 16:29).
2017-08-20 11:50:20.609 [Information][ (0)]: Operating system: Windows 7 6.1
(Build 7601: Service Pack 1) (IA32)
2017-08-20 11:50:20.609 [Information][ (0)]: Platform identification: win7
32bit
2017-08-20 11:50:20.611 [Information][ (0)]: Service starting
2017-08-20 11:50:20.612 [Information][ (0)]: Started to listen on port 9978
2017-08-20 11:50:20.613 [Information][#1 (1)]: ServiceServer connected
2017-08-20 11:50:20.614 [Information][#1 (1)]: Received LaunchElevatedRequest
3245476907
2017-08-20 11:50:20.614 [Error][#1 (1)]: Couldn't get query user token, error
code 0
2017-08-20 11:50:20.614 [Information][#1 (1)]: LaunchElevatedRequest complete:
1
2017-08-20 11:50:20.614 [Information][#1 (1)]: Sending response of type 2
[Sequence Number: 3245476907], rseq 3245476907, size 17 (bytes sent: 17),
completed OK
2017-08-20 11:50:20.614 [Information][#1 (1)]: LaunchElevatedRequest response
sent
2017-08-20 11:50:20.614 [Information][#1 (1)]: Connection closed by remote host
2017-08-20 11:50:20.615 [Information][#1 (1)]: ServiceConnectionHandler
disconnecting
--- snip ---

With Wine-Staging 2.14:

Client log:

--- snip ---
2017-08-20 19:07:35.853 [Information][ (0)]: Log started. Application version:
1.2.17.9 (2017-07-27 16:29).
2017-08-20 19:07:35.854 [Information][ (0)]: Operating system: Windows 7 6.1
(Build 7601: Service Pack 1) (IA32)
2017-08-20 19:07:35.854 [Information][ (0)]: Platform identification: win7
32bit
2017-08-20 19:07:35.854 [Information][ (0)]: Running InitClientStrategy.
2017-08-20 19:07:35.854 [Information][ (0)]: Client launched via auto start
2017-08-20 19:07:35.863 [Information][ (0)]: Requesting service to fix
privileges for dir C:\Program Files\GOG Galaxy
2017-08-20 19:07:35.865 [Information][ (0)]: Sending message of type 3
[Sequence Number: 4288868353], rseq 0, size 43 (bytes sent: 43), completed OK
2017-08-20 19:07:35.865 [Information][ (0)]: Request sent [Sequence Number:
4288868353], waiting for response...
2017-08-20 19:07:36.720 [Information][ (0)]: Sending data for fix privileges
request to service complete
2017-08-20 19:07:36.720 [Information][ (0)]: Launching process. Command:
C:\users\Public\Application Data\GOG.com\Galaxy\redists\GalaxyUpdater.exe,
Initial Directory: C:\users\Public\Application Data/GOG.com/Galaxy/redists,
Elevated: false, Arguments: { /clientUpdatePath="C:\Program Files\GOG Galaxy"
/previousClientVersion="1.2.17.9"
/redistUpdatePath="C:\users\Public\Application Data/GOG.com/Galaxy/redists"
/updateClient /updateRedist /updateStrategy="Prefetch" }
2017-08-20 19:07:36.730 [Information][ (0)]: Changing setting launchParams from
'[]' to '["\/deelevated","\/launchViaAutoStart"]'
2017-08-20 19:07:36.731 [Information][ (0)]: Used InitClientStrategy to launch
application. Command-line parameters: /deelevated /launchViaAutoStart
2017-08-20 19:07:36.731 [Information][ (0)]: Initialization strategy
'InitClientStrategy' returned exit code 'Launching Updater; exiting.'. The
client will exit.
2017-08-20 19:07:42.469 [Information][ (0)]: Log started. Application version:
1.2.17.9 (2017-07-27 16:29).
2017-08-20 19:07:42.469 [Information][ (0)]: Operating system: Windows 7 6.1
(Build 7601: Service Pack 1) (IA32)
2017-08-20 19:07:42.469 [Information][ (0)]: Platform identification: win7
32bit
2017-08-20 19:07:42.469 [Information][ (0)]: Running InitClientStrategy.
2017-08-20 19:07:42.478 [Information][ (0)]: Requesting service to fix
privileges for dir C:\Program Files\GOG Galaxy
2017-08-20 19:07:42.480 [Information][ (0)]: Sending message of type 3
[Sequence Number: 260352511], rseq 0, size 42 (bytes sent: 42), completed OK
2017-08-20 19:07:42.480 [Information][ (0)]: Request sent [Sequence Number:
260352511], waiting for response...
2017-08-20 19:07:43.333 [Information][ (0)]: Sending data for fix privileges
request to service complete
2017-08-20 19:07:43.333 [Information][ (0)]: The client update is disabled,
continuing.
2017-08-20 19:07:43.333 [Information][ (0)]: Used InitClientStrategy to launch
application. Command-line parameters: /deelevated /runWithoutUpdating
2017-08-20 19:07:43.333 [Information][ (0)]: Initialization strategy
'InitClientStrategy' returned exit code 'Returned successfully.'. The client
will continue.
2017-08-20 19:07:43.333 [Information][ (0)]: Switching logger from
'C:\users\Public\Application Data\GOG.com\Galaxy\logs\GalaxyInitialization.log'
to log to 'C:\users\Public\Application
Data\GOG.com\Galaxy\logs\GalaxyClient.log'.
--- snip ---

Service:

--- snip ---
2017-08-20 19:07:35.689 [Information][ (0)]: Log started. Application version:
1.2.17.9 (2017-07-27 16:29).
2017-08-20 19:07:35.689 [Information][ (0)]: Operating system: Windows 7 6.1
(Build 7601: Service Pack 1) (IA32)
2017-08-20 19:07:35.689 [Information][ (0)]: Platform identification: win7
32bit
2017-08-20 19:07:35.691 [Information][ (0)]: Service starting
2017-08-20 19:07:35.692 [Information][ (0)]: Started to listen on port 9978
2017-08-20 19:07:35.692 [Information][#1 (1)]: ServiceServer connected
2017-08-20 19:07:35.693 [Information][#1 (1)]: Received LaunchElevatedRequest
3948359654
2017-08-20 19:07:35.695 [Information][#1 (1)]: Default working dir: C:\Program
Files\GOG Galaxy\
2017-08-20 19:07:36.703 [Information][#1 (1)]: Created process as user. Process
path: C:\Program Files\GOG Galaxy\GalaxyClient.exe, command line "C:\Program
Files\GOG Galaxy\GalaxyClient.exe" /launchViaAutoStart /deelevated , working
directory: C:\Program Files\GOG Galaxy\
2017-08-20 19:07:36.703 [Information][#1 (1)]: LaunchElevatedRequest complete:
0
2017-08-20 19:07:36.704 [Information][#1 (1)]: Sending message of type 2
[Sequence Number: 0], rseq 3948359654, size 21 (bytes sent: 21), completed OK
2017-08-20 19:07:36.704 [Information][#1 (1)]: LaunchElevatedRequest response
sent
2017-08-20 19:07:36.704 [Information][#1 (1)]: ServiceServer connected
2017-08-20 19:07:36.704 [Information][#1 (1)]: Connection closed by remote host
2017-08-20 19:07:36.704 [Information][#1 (1)]: ServiceConnectionHandler
disconnecting
--- snip ---

The service re-runs the client with:

--- snip ---
004d:Call advapi32.CreateProcessAsUserW(000000c4,0073a588 L"C:\\Program
Files\\GOG Galaxy\\GalaxyClient.exe",0073a4d8 L"\"C:\\Program Files\\GOG
Galaxy\\GalaxyClient.exe\"  /deelevated
",00000000,00000000,00000000,00000428,00c50000,0073a6d8 L"C:\\Program
Files\\GOG Galaxy\\",00c4e224,00c4e27c) ret=0040db8c
...
004d:Ret  advapi32.CreateProcessAsUserW() retval=00000001 ret=0040db8c 
--- snip ---

which ought to run the process with restricted token.

Fortunately the client checks are kinda lazy (by design?): if any client
process command line parameter contains '/deelevated' it won't request
de-elevation again, regardless what 'shell32.IsUserAnAdmin()' returns.

$ sha1sum setup_galaxy_1.2.17.9.exe 
931b2049fb9f1d66e937d823144023f3e2ca9d3d  setup_galaxy_1.2.17.9.exe

$ du -sh setup_galaxy_1.2.17.9.exe 
155M    setup_galaxy_1.2.17.9.exe

$ wine --version
wine-2.15

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