[Bug 20296] League of Legends: crash after eula

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Jan 10 09:23:55 CST 2010


http://bugs.winehq.org/show_bug.cgi?id=20296


Christoph Hohmann <reboot at gmx.ch> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |reboot at gmx.ch




--- Comment #15 from Christoph Hohmann <reboot at gmx.ch>  2010-01-10 09:23:54 ---
The problem seems to be that the launcher tries to use a com object with the
CLSID {629f8434-0530-41e6-b7c5-61a82faa3df2} which can not be created. The
launcher seems to assume that the was created without checking if it really
worked.

The first problem is that the installer does not create the CLSID and AppID
entries in the registry for the com object. I'll attach a registry file that
will create the entries I got from a windows installation, you might need to
adjust the path of the DLL.

The second problem is that lol.launcher tries to load a COM object that has
only a InprocServer32 entry with the CLSCTX_LOCAL_SERVER flag. On windows the
DLL is loaded into a out-of-process surrogate server. From what I could
understand from the wine's code it does not support this. Wine can only start
com servers if they have a LocalService entry under the AppId entry.

To check if the crash is really related to this I started lol.launcher in the
wine debugger and put a break point CoGetClassObject. Every time the debugger
stopped in the function i checked which CLSID should be loaded and when
lol.launcher tried to load {629f8434-0530-41e6-b7c5-61a82faa3df2} I modified
the paramter dwClsContext from CLSCTX_LOCAL_SERVER (0x4) to
CLSCTX_INPROC_HANDLER (0x1). Like this the DLL in loaded into the lol.launcher
instead of running it into a seperate process. After i continued the execution
of the process it did not crash anymore and the launcher window opened. It even
downloaded and applied the latest patch.

A proper solution would probably be to check for the DllSurrogate key of the
AppID entry in the registry and then try to start a surrogate server. It seems
lol.launcher does this because these are started from a windows service and
have other permissions then the process that loaded the com object (see
http://leagueoflegends.com/board/showthread.php?p=79566#post79566). So may not
be needed on wine and the DLL can just be loaded in-process.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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