WineHQ
Bug Tracking Database – Bug 34098

 Bugzilla

 

Last modified: 2014-02-20 12:37:24 UTC  

Gamefly Client fails to install downloaded game content

Bug 34098 - Gamefly Client fails to install downloaded game content
Gamefly Client fails to install downloaded game content
Status: CLOSED FIXED
AppDB: Show Apps affected by this bug
Product: Wine
Classification: Unclassified
Component: advapi32
1.6
x86-64 Linux
: P2 normal
: ---
Assigned To: Erich E. Hoover
http://digital2.gameflycdn.com/gamefl...
: download, patch, regression
Depends on:
Blocks:
  Show dependency tree
 
Reported: 2013-07-19 18:44 UTC by Mr Nobody
Modified: 2014-02-20 12:37 UTC (History)
4 users (show)

See Also:
Regression SHA1: d5e40b0eff65aa2d309b9e4be7d9867fd1cf7eb8
Fixed by SHA1: ee49a5a273e993684ae49c4664c1620d06da3ec2
Distribution: ---
Staged patchset:


Attachments
debug log (+trace,+seh,+ntdll,+tid) (63.58 KB, application/octet-stream)
2013-07-19 18:44 UTC, Mr Nobody
Details
debug log (+trace,+seh,+tid,+text,+dialog) (608 bytes, application/gzip)
2013-07-20 19:18 UTC, Mr Nobody
Details
debug log (as above, +file ) (47.10 KB, application/octet-stream)
2013-07-20 21:49 UTC, Mr Nobody
Details
workaround to revert regression patch (2.02 KB, text/plain)
2013-08-18 16:53 UTC, Christoph Korn
Details
debug log +advapi (13.89 KB, text/plain)
2013-08-19 14:45 UTC, Christoph Korn
Details
Add [Get|Set]SecurityInfo diagnostics (994 bytes, patch)
2013-09-03 00:28 UTC, Erich E. Hoover
Details | Diff
debug log +advapi (8.40 KB, text/plain)
2013-09-03 12:04 UTC, Christoph Korn
Details
Mask out SetSecurityInfo higher-order bits (1.01 KB, patch)
2013-09-03 12:25 UTC, Erich E. Hoover
Details | Diff
debug log +advapi (8.40 KB, text/plain)
2013-09-03 15:39 UTC, Christoph Korn
Details
Report stub behavior for kernel objects (706 bytes, patch)
2013-09-20 19:28 UTC, Erich E. Hoover
Details | Diff
+advapi log after applying latest diff (4.15 KB, text/plain)
2013-09-21 19:48 UTC, Mr Nobody
Details
Add WRITE_DAC access mapping for the server end of a named pipe (1.62 KB, patch)
2013-11-08 10:12 UTC, Erich E. Hoover
Details | Diff
Fix PIPE_ACCESS_* to request correct permissions and add WRITE_DAC for GENERIC_WRITE pipes (2.26 KB, patch)
2014-01-15 15:25 UTC, Erich E. Hoover
Details | Diff
kernel32: Add support for security access parameters for named pipes. (2.96 KB, patch)
2014-01-16 12:10 UTC, Erich E. Hoover
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Mr Nobody 2013-07-19 18:44:27 UTC
Created attachment 45338 [details]
debug log (+trace,+seh,+ntdll,+tid)

The Gamefly client previously suffered from this problem of not being able to install game content it successfully downloads, and this was fixed by SHA1 53e4ddc399cef1f044fb25bdb19a478ced6178d7 wrt bug #27569 ; this bad behavior has returned, somewhere on the road towards the wine-1.6 release ;; rolling back to wine-1.5.15 effectively sees things work again, but I'm unsure if it's the exact same issue again or not. I can attempt to get a better fix on when/where things started going awry again here if needed.

The attached debuglog (+trace,+seh,+tid,+ntdll) is capture from starting the gamecly client, logging on, selecting and downloading a game (which completes successfully) and then clicking on the 'install game' 2 or 3 times to generate the 'Install error' message.
Comment 1 Dan Kegel 2013-07-20 09:43:40 UTC
The error doesn't jump out at me from the log.
Ideally we'd see the 'Install error' message in the log.

How about a log without +ntdll, but with +text and +dialog?

A regression test would of course be best.
Comment 2 Mr Nobody 2013-07-20 19:18:44 UTC
Created attachment 45344 [details]
debug log (+trace,+seh,+tid,+text,+dialog)
Comment 3 Mr Nobody 2013-07-20 19:31:45 UTC
Hi Dan - as you can see, it becomes very sparse with +ntdll removed and +text,+dialog added ... perhaps too much so - anything that proclaims 'install error' and offers to validate the download (which does come back clean), should create some noise here... maybe it's handing off to another process, rechecking..
Comment 4 Mr Nobody 2013-07-20 21:49:48 UTC
Created attachment 45345 [details]
debug log (as above, +file )

...at install time, the gamefly client creates a working directory which appears at ~/GameFly ; game installation files are downloaded into ~/GameFly/downloads/{unique_app_#}/..  pending installation ; the game installation path is ~/GameFly/games/{app_name}/..

Wrt the attached log, the game I'm attempting to install (X-com UFO Defense) has already been downloaded and is ready to install. The game's unique_id# is 60008572 and if I cd to that directory I see ;

gcb@debian7:~/GameFly/downloads/60008572$ ls -l
total 8684
-rwxr-xr-x 1 gcb gcb 8873057 Jul 20 09:24 XCom-UFO_Setup.exe

..tried 3 times to install the game, all attempts failed ;)
Comment 5 Mr Nobody 2013-07-24 19:42:12 UTC
... in the process of backtracking where this broke again after wine-1.5.15 (to get a fix on where to look for the actual regression..if any), I discovered a couple of things...

... going backwards from wine-current, @ wine-1.5.18 or such, the helper program 'winOSext.exe' started hoisting an error message about it's requirement for .NET 4.0 .. (?).. indeed, the gamefly installer exe now actually bundles 'dotNetFx40_Full_setup.exe' (which is the web-installer version), but that part of the installation never fires and/or quietly fails...

... creating a wineprefix & preparing that by adding .net4 to it prior to running the gamefly installer, doesn't change the situation... ie; .net4 is there but the client still fails to install any game it downloads. There are two helper apps the gamefly client calls to - 'winOSext.exe' and 'GameflyGameInstallManager.exe' -- although I hit the 'install game' widget 3 times in the +file log, it never seems as though GameflyGameInstallManager.exe ever gets called at all ... the other helper app is seen to be accessed ...

... these observations make me wonder whether or not it *should* still work in wine-1.5.15, but it does still work there and then without any .net4 being involved. In any event, I've no idea what debug channels to poke at, as most all I've tried thus far return very little chatter at all. I should also mention that I believe previous versions of the gamefly client *didn't* bundle the .net4 installer, and this could very much be as much to do with changes to the gamefly client itself, as it has to do with changes to wine...if anyone has an idea on where/what I should look at, let me know...
Comment 6 Christoph Korn 2013-08-18 16:23:32 UTC
A regression test from wine-1.5.15 to wine-1.6 showed this bad commit:
d5e40b0eff65aa2d309b9e4be7d9867fd1cf7eb8 is the first bad commit
commit d5e40b0eff65aa2d309b9e4be7d9867fd1cf7eb8
Author: Erich Hoover <ehoover@mines.edu>
Date:   Thu Nov 15 10:16:23 2012 -0700

    advapi32: Implement SetSecurityInfo on top of NtSetSecurityObject.

:040000 040000 aef0d02476efb85162df50c0a7822f1a764e36f8 0a60d7714ab6bfd0de346781896069669a93e583 M	dlls
Comment 7 Christoph Korn 2013-08-18 16:53:20 UTC
Created attachment 45653 [details]
workaround to revert regression patch

This patch applied on current master (e3e1284) makes the game (Monkey Island 2: Special Edition) install fine in the GameFly client and it fails to install without this patch.
Just a workaround obviously.
Comment 8 Mr Nobody 2013-08-19 01:33:31 UTC
Thanks for finding that Christoph -- patch applies equally well to wine-1.6 and then the gamefly client -will- install games. Further, the same revert also fixes the error wrt the gamefly client launching/uninstalling games, so it seems all these things are related. Quite possibly this will work one day when all the other cases of se_object_types are there ; good to have a quick/easy workaround for now tho' ;)
Comment 9 Mr Nobody 2013-08-19 01:37:14 UTC
Oops- mouse/operator error changed 'component' field, restored.
Comment 10 Erich E. Hoover 2013-08-19 14:21:05 UTC
Would you mind providing me with a "+advapi" log?  I don't have a way to reproduce this myself, so I'd like to see what goes into the function that results in this problem.
Comment 11 Christoph Korn 2013-08-19 14:45:27 UTC
Created attachment 45664 [details]
debug log +advapi

Installing Monkey Island 2: Special Edition on master (e3e12845572dce7b35660814c44dedf069de1dfb). (No patches applied).
Comment 12 Erich E. Hoover 2013-09-03 00:28:28 UTC
Created attachment 45827 [details]
Add [Get|Set]SecurityInfo diagnostics

(In reply to comment #11)
> Created attachment 45664 [details]
> debug log +advapi
> 
> Installing Monkey Island 2: Special Edition on master
> (e3e12845572dce7b35660814c44dedf069de1dfb). (No patches applied).

Huh, I know I wrote a reply to this but, clearly, I did not send it.  Anyway, please try the attached patch and re-run the debug lug for +advapi.  Sorry about not replying sooner :/
Comment 13 Christoph Korn 2013-09-03 12:04:07 UTC
Created attachment 45844 [details]
debug log +advapi

Applied the patch on top of current master (1562065).
Comment 14 Erich E. Hoover 2013-09-03 12:25:49 UTC
Created attachment 45847 [details]
Mask out SetSecurityInfo higher-order bits

I suspect that the problem is that Wine doesn't understand the SecurityInformation bit for "PROTECTED_DACL_SECURITY_INFORMATION".  Please try the attached hack to see if it works around the problem.
Comment 15 Christoph Korn 2013-09-03 15:39:38 UTC
Created attachment 45850 [details]
debug log +advapi

Unfortunately, this patch makes no difference.
Comment 16 Erich E. Hoover 2013-09-20 19:28:21 UTC
Created attachment 46012 [details]
Report stub behavior for kernel objects

Please try the attached patch instead (returns success for changes to kernel objects).  Sorry it's taken me so long to get back to this, I've been really busy with work.
Comment 17 Mr Nobody 2013-09-21 19:48:16 UTC
Created attachment 46021 [details]
+advapi log after applying latest diff

Thanks for your help with this Erich -- applied latest patch (returns success for changes to kernel objects) to pristine wine-1.7.2 tree & retested things -- that seems to fix the problem...

...not shown in the attached log, is that patch also seems to allow the gamefly client to successfully download live updates and complete the client upgrade process as well (which used to fail previously) -- it also fixes the unable to uninstall games issue, and the 'play now' button works too...

Attached log is from installing a single game after previously downloading the content - operation now completes successfully (then quit client)
Comment 18 Erich E. Hoover 2013-09-22 16:24:02 UTC
(In reply to comment #17)
> ...
> Thanks for your help with this Erich -- applied latest patch (returns success
> for changes to kernel objects) to pristine wine-1.7.2 tree & retested things --
> that seems to fix the problem...
> ...

Awesome, well - the patch is just a workaround.  What we really need to do is figure out what object the client is trying to work with and why the operation is failing.
Comment 19 Mr Nobody 2013-10-31 18:33:23 UTC
...just a heads-up here -- as of Nov 1st 2013, GameFly Inc they have decided to drop the gamefly client software as part of the games delivery system, switching instead to a web-based (hoisted on IE) interface called the 'gamefly downloader'.

...I've just had a (very unsuccessful) few attempts trying to install their new downloader (which tries to install as an IE based application extension by the looks of things), but having failed miserably there I cannot say if this bug still exists or is even a problem to their new interface..

...suffice it to say, this bug still there or not, the original application the bug was drawn again no longer exists, and so we might think about closing this winebug for that reason alone (we can no longer test/verify any work done  on wine in this area, using the now defunct gamefly client)?....
Comment 20 Erich E. Hoover 2013-11-07 19:32:51 UTC
(In reply to comment #19)
> ...
> ...suffice it to say, this bug still there or not, the original application the
> bug was drawn again no longer exists, and so we might think about closing this
> winebug for that reason alone (we can no longer test/verify any work done  on
> wine in this area, using the now defunct gamefly client)?....

Sorry it's taken me a while to get back to this, work has been a little crazy.  Can you still trigger this bug with the old client you have?  It would be nice to identify which kernel object it's trying to modify and have Wine handle that properly.  However, if it's impossible to reproduce the bug now then there's not much we can do.
Comment 21 Anastasius Focht 2013-11-08 04:50:17 UTC
Hello folks,

--- quote ---
...suffice it to say, this bug still there or not, the original application the
bug was drawn again no longer exists, and so we might think about closing this
winebug for that reason alone (we can no longer test/verify any work done  on
wine in this area, using the now defunct gamefly client)?....
--- quote ---

I found a client installer "v1.2.205" here: http://digital2.gameflycdn.com/gamefly_setup.exe

$ sha1sum gamefly_setup.exe 
58ee4a439e0e2df8821a72dee72464e5958b99e1  gamefly_setup.exe

$ du -sh gamefly_setup.exe 
25M	gamefly_setup.exe

It client installer will install some prerequisites: .NET Framework 4.0 (if Mono not present) and Adobe AIR.
The content delivery system seems to be Adobe AIR based.

The client will download an update to v1.2.390 to user temp folder (http://digital.gameflycdn.com/gamefly_update_1.2.390.exe).

Though it doesn't proceed further to execute the updater which could be another bug.

Though you can manually execute the updater which will successfully update the client in place.
Search for "gamefly_update_1.2.390.exe" ("\\\\?\\C:\\users\\focht\\Temp\\fla72c8.tmp\\gamefly_update_1.2.390.exe")

Does it help?

Regards
Comment 22 Anastasius Focht 2013-11-08 04:55:55 UTC
Hello again,

the client seems to be the "old" one as it says "Support for the GameFly Client will end in 23 days" on the bottom status bar.

So hurry up  :-)

Regards
Comment 23 Erich E. Hoover 2013-11-08 08:45:38 UTC
(In reply to comment #21)
> ...
> Does it help?
> 
> Regards

Thanks Anastasius, it triggers the bug as soon as it tries to update itself :)  I'll see what I can find out.
Comment 24 Erich E. Hoover 2013-11-08 10:12:36 UTC
Created attachment 46482 [details]
Add WRITE_DAC access mapping for the server end of a named pipe

I'm not sure if this is the right way to fix this, but the problem is that GENERIC_READ access is being requested on the server side of the named pipe and that needs to permit WRITE_DAC access.  The attached patch at least allows the downloader to update itself (I don't know about any other issues).
Comment 25 Mr Nobody 2013-11-14 17:24:16 UTC
Applied latest patch to clean 1.7.6 tree & retested -- that seems to fix it ; client auto-updates + installs/uninstalls games correctly - seems like a win to me Erich, thank you  (pity gamefly are dropping the client but you get that)
Comment 26 Erich E. Hoover 2013-11-14 17:27:23 UTC
(In reply to comment #25)
> Applied latest patch to clean 1.7.6 tree & retested -- that seems to fix it ;
> client auto-updates + installs/uninstalls games correctly - seems like a win to
> me Erich, thank you  (pity gamefly are dropping the client but you get that)

Yeah, I'm more interested in fixing the problem - I'm just not sure if this is the correct place to apply the fix.  Anyone else here have an opinion?
Comment 27 Erich E. Hoover 2014-01-15 15:25:40 UTC
Created attachment 47220 [details]
Fix PIPE_ACCESS_* to request correct permissions and add WRITE_DAC for GENERIC_WRITE pipes

This should be a better fix (fortunately I was still able to test!).  It appears that PIPE_ACCESS_INBOUND and PIPE_ACCESS_OUTBOUND currently have _reversed_ permissions (see http://msdn.microsoft.com/en-us/library/windows/desktop/aa365600%28v=vs.85%29.aspx ).
Comment 28 Erich E. Hoover 2014-01-16 12:10:22 UTC
Created attachment 47224 [details]
kernel32: Add support for security access parameters for named pipes.

After doing some tests it appears that that article was incorrect, but it did allow me to find the real source of the problem.  The attached patch is a real fix.  Fortunately, the installer uses the same code as the client used to, so this was easy to test :)
Comment 29 Erich E. Hoover 2014-02-10 13:49:57 UTC
This issue should now be fixed by commit ee49a5a273e993684ae49c4664c1620d06da3ec2.  It's worth noting that while the client is no longer supported, the downloader has the same behavior.
Comment 30 Anastasius Focht 2014-02-10 14:01:16 UTC
Hello folks,

indeed fixed by commit http://source.winehq.org/git/wine.git/commitdiff/ee49a5a273e993684ae49c4664c1620d06da3ec2

The client successfully downloads a newer version 1.2.391 and then proceeds with 'ClickOnce' installation package (dfsvc.exe) which also succeeds.

Thanks Erich

Regards
Comment 31 Erich E. Hoover 2014-02-10 18:38:29 UTC
(In reply to comment #30)
> Hello folks,
> 
> indeed fixed by commit
> http://source.winehq.org/git/wine.git/commitdiff/
> ee49a5a273e993684ae49c4664c1620d06da3ec2
> 
> The client successfully downloads a newer version 1.2.391 and then proceeds
> with 'ClickOnce' installation package (dfsvc.exe) which also succeeds.
> 
> Thanks Erich
> 
> Regards

No problem, thanks for the quick confirmation!
Comment 32 Mr Nobody 2014-02-10 20:26:49 UTC
Apols, been away -- tardily confirming fix ; seems to work as expected -- thanks heaps Erich, much appreciated!
Comment 33 Alexandre Julliard 2014-02-20 12:37:24 UTC
Closing bugs fixed in 1.7.13.


Privacy Policy
If you have a privacy inquiry regarding this site, please write to [email protected]

Hosted By CodeWeavers