PaulCombal / SamRewritten

Steam Achievement Manager For Linux. Rewritten in C++.
GNU General Public License v3.0
340 stars 32 forks source link

Does not run on Ubuntu 20.04 #68

Closed jalabb closed 4 years ago

jalabb commented 4 years ago

Hello, I installed the dependencies as the README instructs, make went well but when I try to launch I get errors :

$ ./bin/launch.sh 
/DATA/SamRewritten-master/bin/samrewritten: symbol lookup error: /DATA/SamRewritten-master/bin/samrewritten: undefined symbol: SteamInternal_FindOrCreateUserInterface
$ ./bin/samrewritten 
./bin/samrewritten: error while loading shared libraries: libsteam_api.so: cannot open shared object file: No such file or directory

libsteam_api.so is right there in the bin folder so I really don't have a clue what's going on with that last one.

PaulCombal commented 4 years ago

I just tested on a fresh up-to-date 20.04 VM, and it worked as expected.. Is your steam client up-to date? Are you using offline mode? Did you change default installation settings? Also, be sure to use launch.sh.

Also, why does it say /DATA/ in your path? Are you logged in as the same user Steam runs as?

jalabb commented 4 years ago

I tried it on another machine and it does launch now, not sure what was wrong with the other one. I'm closing the bug as I did get the app to work, just thought I would let you know I had to opt out of the Steam Beta. When the beta is enabled, launching SamRewritten crashes Steam for me and the console spits this out :

../steamnetworkingsockets/clientlib/csteamnetworkingsockets_steam.cpp (39) : Assertion Failed: Don't know Steam universe.  Order of init bug?
../steamnetworkingsockets/clientlib/csteamnetworkingsockets_steam.cpp (39) : Assertion Failed: Don't know Steam universe.  Order of init bug?
crash_20200531222508_2.dmp[18171]: Uploading dump (out-of-process)
/tmp/dumps/crash_20200531222508_2.dmp
../steamnetworkingsockets/clientlib/csteamnetworkingsockets_steamclient.cpp (275) : Assertion Failed: IClientNetworkingUtils_Create - Don't know Steam universe.  Order of init bug?
../steamnetworkingsockets/clientlib/csteamnetworkingsockets_steamclient.cpp (275) : Assertion Failed: IClientNetworkingUtils_Create - Don't know Steam universe.  Order of init bug?
crash_20200531222508_2.dmp[18171]: Finished uploading minidump (out-of-process): success = yes
crash_20200531222508_2.dmp[18171]: response: Discarded=1
crash_20200531222508_2.dmp[18171]: file ''/tmp/dumps/crash_20200531222508_2.dmp'', upload yes: ''Discarded=1''
../common/pipes.cpp (766) : CClientPipe::BWriteAndReadResult: BWaitResult failed, disconnected
../common/pipes.cpp (766) : CClientPipe::BWriteAndReadResult: BWaitResult failed, disconnected
../common/pipes.cpp (766) : Fatal assert failed: ../common/pipes.cpp, line 766.  Application exiting.

../common/pipes.cpp (766) : Fatal assert failed: ../common/pipes.cpp, line 766.  Application exiting.

_ExitOnFatalAssert
assert_20200531222517_4.dmp[18222]: Uploading dump (out-of-process)
/tmp/dumps/assert_20200531222517_4.dmp
assert_20200531222517_4.dmp[18222]: Finished uploading minidump (out-of-process): success = yes
assert_20200531222517_4.dmp[18222]: response: Discarded=1
assert_20200531222517_4.dmp[18222]: file ''/tmp/dumps/assert_20200531222517_4.dmp'', upload yes: ''Discarded=1''

Thanks for your work, I could finally unlock that last bugged achievement for Borderlands 3 :)

wgpierce commented 4 years ago

SamRewewritten has to find the steam libraries in order to talk to the running steam client.

I'm guessing SamRewewritten picked up the regular steam Steamclient.so but the beta client was loaded and so used a different .so, so Samrewritten tried to invoke the function at the wrong address. The library changes when the launcher is named steambeta I believe from here in the Steam bootstrapper script (check where it is on your distro):

STEAMPACKAGE="${0##*/}"

But I think that can only happen if you install the "beta" client from some specific package provided by either Steam or some distros. If you "opt in" to the beta via the regular Steam client itself, then the libraries seem to stay in the same location (this is what I do). The function here only looks for the regular one: https://github.com/PaulCombal/SamRewritten/blob/f75eaa9dcad0735fcd961d5b251ccb5b34360d85/src/controller/MySteamClient.h#L45

and I didn't bother trying to detect the "SteamBeta" folder because I didn't have an example of it or how to detect it reliably. SamRewritten also doesn't try to handle any special packaging of Steam such as flatpak format. Any PRs to fix handling these different situations is welcome!