http://bugs.winehq.org/show_bug.cgi?id=20296
--- Comment #51 from Amos Wenger amos@official.fm 2011-04-10 10:28:34 CDT --- (In reply to comment #50)
I tried the patch on the latest wine source from git and Debian unstable (32 bit). It seems to work fine. The dllhost.exe process was started and the launcher did not crash. I could login and I could play the tutorial.
I noticed that the dllhost.exe process is not terminated when the lol.laucnher.exe exits.
Did you notice a fixme:ole:FreeSurrogate stub in the logs? If yes, it's a pretty easy fix. If not, I'm not sure how to make it called (does CoFreeUnusedLibraries handle that?)
On Windows the dllhost.exe process is started by svchost.exe and not a child process of lol.launcher.exe. If you have multiple processes using a shared instance of a surrogate it could be a problem if the surrogate is a child process of one of the processes that uses it and is terminated when it's parent process exits.
Alright, it makes sense, but how do we do that? I've read wine's svchost sources (for reference: http://source.winehq.org/source/programs/svchost/svchost.c ), but there are a few things I don't know yet:
- How is svchost.exe actually started if not by CreateProcess? Is is launched everytime wine itself is launched? - If svchost.exe is not started by CreateProcess how can I pass it arguments? - Also, svchost's arguments seem to be Service names/group names. We have no services for dllhost.exe/Lol's DLL we're loading
svchost.exe usage is still rocket science to me, I've tried to find docs but there seems to be very little useful tech info on the interwebs :/