It could as well be connected to the way launcher passes arguments to the client. I will try to check this hypothesis tomorrow.
I managed to get SiSi client running via linux launcher as well. Command lines seem to differ in a few things:
- Second part of ssoToken is different
- Windows launcher passes refreshToken and machineHash, linux launcher does not
- Linux launcher passes ā/remotefilecachefolder=Z:/home/dfx/.eve//ResFilesā and ā/triPlatform=dx9ā, windows launcher does not
I tried modifying launch arguments so that they mimic ones passed by the linux launcher and launch EVE client directly, but it seems to always lead to the same crash, see stdout below:
Network layer using: CarbonIO
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
EVE Client version 19.09 build 1946089 starting 09/30/2021 14:31:20
Cerberus localization module loaded on client
EVE Client version 19.09 build 1946089 started 09/30/2021 14:31:21
...loading from: C:/EVE/SharedCache/sisi/bin64/packages/eveProto/generated/client.pyd
Loaded native protobuf serialization
EXCEPTION #1 logged at 09/30/2021 14:31:23 : Unhandled exception in <TaskletExt object at 0x3ea6808, abps=1001, ctxt=None>
Formatted exception info: ImportError: DLL load failed: Success.
Common path prefix = c:/buildagent/work/28f796d548f5b3f2/eve/staging/2021-iceberg
Caught at:
<pre>/packages/bluepy/__init__.py(52) CallWrapper
Thrown at:
<pre>/packages/bluepy/__init__.py(43) CallWrapper
<pre>/carbon/common/lib/autoexec_client_core.py(166) Startup
<pre>/carbon/common/script/sys/serviceManager.py(132) Run
<pre>/carbon/common/script/sys/serviceManager.py(88) _BuildClassMap
<pre>/eve/common/modules/nice/client/_nastyspace/svc.py(81) <module>
<pre>/eve/client/script/parklife/fleetSvc.py(17) <module>
<pre>/eve/client/script/ui/shared/fleet/fleetwindow.py(16) <module>
<pre>/eve/client/script/ui/shared/fleet/fleetRespawnPoints.py(1) <module>
<pre>/eve/common/modules/nice/client/_nastyspace/listentry.py(92) <module>
<pre>/eve/client/script/ui/shared/incursionJournal.py(11) <module>
<pre>/eve/client/script/ui/shared/mapView/mapViewUtil.py(12) <module>
<pre>/eve/client/script/ui/shared/systemMenu/betaOptions.py(11) <module>
<pre>/packages/launchdarkly/__init__.py(69) <module>
__builtins__ = {'AUR': 30,
'ArithmeticError': <type 'exceptions.ArithmeticError'>,
'AssertionError': <type 'exceptions.AssertionError'>,
'AttributeError': <type 'exceptions.AttributeError'>,
...
__doc__ = None
__file__ = None
__loader__ = None
__name__ = None
__package__ = None
__path__ = None
_make_user_object = None
client = None
client_instance = None
ext = None
get_client = None
imp = None
json = None
logger = None
logging = None
monolithconfig = None
on_client = None
os = None
platform = None
sdk = None
set_user = None
Thread Locals: session was <Session: (sid:4439296696296545826, mutating:0, contextOnly:False, corprole:0x0, languageID:EN, role:0x4000000000000000L, sessionType:5, rolesAtAll:0x0, rolesAtH
Q:0x0, rolesAtBase:0x0, rolesAtOther:0x0)>
Stackhash: 1095971830
Reported from: logmodule
EXCEPTION END
An exception has occurred. It has been logged in the log server as exception #1
Thanks for testing that! I am actually debugging where launchdarkly gets loaded now. It looks like the native DLL is actually loaded successfully but the embedded Python interpreter sees it as an error some some reason, hence the cryptic Failed to load DLL: Success
message.
(after reading all of these things)
Iām wondering about TQ playability under linux after next update. Right now its fine, BUT it seems problems are coming to me.
Yes, quite obviously it will be broken for launching via Windows launcher with modern Wine versions. The only known workaround so far is using linux launcher. Maybe old wine versions will also work.
More progress:
I think I found the reason for the cryptic error code. Basically launchdarkly_client.pyd is failing to load with LoadLibraryExW
, but the game code isnāt checking the error status before doing processing on it. This processing is changing the error status value before it gets reported, which causes it to say āSuccessā in the logs instead of the actual error message.
More progress:
I managed to get the real error code back from the OS: itās 0x7e, which means module not found. Looking at how it loads the modules, it uses an absolute path for every one EXCEPT launchdarkly:
Wine-dbg>x /u $rcx
C:\EVE\SharedCache\sisi\bin64\controlTowerResourcesLoader.pyd
Wine-dbg>c
Stopped on breakpoint 1 at 0x000000001e008ced
Wine-dbg>x /u $rcx
launchdarkly_client.pyd
launchdarkly is using a relative path for some reason and not able to be found by wine. Looking into why this would only affect Wine and not windows now.
I think it was you who fixed prev launcher disease under linux?
Blessed will be your ways man. I owe you whatever amounts you want of solo 1vs1 at the sun
Thanks I did gather enough info to figure out the root cause, but it was the wine devs who actually fixed it
OK, Iāve confirmed that the launchdarkly_client.pyd
module successfully loads with a relative path on windows, and does not in wine. Iām thinking itās related to this last argument theyāre passing to LoadLibraryExW:
LoadLibraryExW((LPCWSTR)plVar4[3],(HANDLE)0x0,8);
8 for this argument messes with the search order for DLLs, and is undefined when passing a relative path as the first argument (which theyāre doing with launchdarkly but no other modules).
Iāve opened a wine bug ticket here: WineHQ Bugzilla ā Bug 51821 ā EVE Online Sisi Client Crashes Due to differences in how Wine and Windows handle LoadLibraryExW Undefined Behavior
Please go ahead and post a comment to show that it affects multiple users
Thank you Renard for doing the heavy lifting. Would help out more if I knew how to get the relevant information.
BTW everyone, while I work on a proper fix, Iāve discovered that if you copy launchdarkly_client.pyd
from C:\EVE\SharedCache\sisi\bin64
to C:\EVE\SharedCache\sisi\
, Sisi will launch just fine, confirming itās an issue with the DLL search path behavior in Wine. You should be able to use this as a workaround for now.
My manā¦ thank you! Will update and verify/confirm once I have a chance.
I guess we should keep a copy of the pyd
file in case this change gets pushed to the TQ launcher before itās resolved via Wine?
Update - Just tried this out. It works.
Wanted to point out that you need to run the launcher first, then copy while itās running. If you copy before the launcher is run, the launchdarkly_client.pyd
will be deleted when the launcher starts. Also, similarly you will have to cp
the file into the directory again every time you run the launcher, as when the launcher starts, it will delete the launchdarkly_client.pyd
file
Thanks for the notes! I forgot to mention that the Launcher cleans out extra files etc. when it starts so youāre exactly right that you need to start the launcher before copying it. Iām talking to the wine devs on IRC now so hopefully we can figure out a fix.
I guess we should keep a copy of the
pyd
file in case this change gets pushed to the TQ launcher before itās resolved via Wine?
I doubt you would need to, although it wouldnāt hurt. There isnāt really a problem with the file, itās just that Wine doesnāt resolve the correct directory when loading it, while Windows does.
@D43dun are you comfortable building wine from source? Iāve got a patch I need to test that fixes it on my system. Iām working on creating more conformance tests that are required before it could be eligible to be accepted in wine, but it would be good to know if it fixes the problem with Sisi on other systems and doesnāt introduce any other serious bugs.
Also I want to try it too. Im kinda ok with building form source, I think. Can I participate?
Grab this patch and apply it with git am
. Should apply cleanly to both vanilla wine and wine-staging.
yep. I can give it a tryā¦ Never done it before, but can look into this in the next day or so.
So, I compiled wine and wine64 from source with your patch applied. Compiling wine reminded me why I stopped using gentoo a long time ago.
I use lutris to run the game, so I pointed the game runner to be the recently compiled wine, and I couldnāt get the launcher to begin. I sense that this might be some sort of issue between how Iām calling wine through lutris. Also, I couldnāt find the debug output from Lutris.
Will try to run again today in the evening, and tail -f
the logs straight from the system to see whatās wrong when running this, try to get the launcher/game to run.