Open ghost opened 5 years ago
It probably needs older API that's not exposed currently:
12137.073:0008:0009:err:steamclient:create_win_interface Don't recognize interface name: SteamUser008
...
12145.249:0008:0009:err:steamclient:create_win_interface Don't recognize interface name: SteamGameServer003
Progress made with the recent 3.16-Beta release! It's now possible to view achievements and use the server browser. However, actually connecting to a server gets the message "This Steam account is being used in another location" in the console, along with the message box below:
However, if one uses sv_lan 1
it is finally possible to launch a listen server :)
I have this problem as well. Obsidian Conflict, Source SDK 2007.
Proton version: 3.16.7
A new Proton 4.2 was just released today.
Already tried it, no improvement (for GE:S) unfortunately.
https://lutris.net/games/obsidian-conflict/ I tried but it isn't working on Lutris yet.
Proton 4.2-3
Got an error when trying to join a game server.
Strange considering I can already join servers using Proton in Half-Life 1 Mods.
4.2-4
Still can't join servers.
Still unable to join servers due to the error above. Attaching a fresh log. steam-9856914317583057114.log
Proton 4.11-1
Still unable to join servers.
Proton 4.11-3
Still unable to join servers, it seems nothing has changed in the previous versions.
As an additional note, listen servers are not VAC protected and I get STEAM_ID_PENDING as Steam ID.
] status
hostname: Obsidian Conflict Beta v1.34 Listen Server
version : 1.0.1.0/14 4104 insecure
udp/ip : (redacted):27015
map : oc_stadium at: -113 x, -1000 y, 192 z
players : 1 (4 max)
# userid name uniqueid connected ping loss state adr
# 2 "Gabe Iggy" STEAM_ID_PENDING 00:26 16 0 active loopback
@kisak-valve Is this being worked on? I don't see why this would be fixed as of 4.11-6.
4.11-8
The mod now crashes when trying to connect a server.
Attaching Proton Log steam-14770360520569520346.log
4.11-12
The mod still crashes when creating or joining a server.
Is this being worked on?
Nope
I just tried Goldeneye: Source with Proton 5.0-5 and it launches then crashes. I watch Source SDK Base 2007 launch and then close.
It used to run fine, but now when I try any version of Proton it crashes
Just want to add that D.I.P.R.I.P. Warm Up on steam does not work on linux with the exact same symptoms posted in OP. https://store.steampowered.com/app/17530/DIPRIP_Warm_Up/
Proton 5.0-6
Now only single player works, listen servers will now crash. On Obsidian Conflict I can set maxplayers
to 1
to force a single player session and it will work that way.
It seems it gets progressively more broken.
Also I can't seem to find this issue in the GitHub searcher, I have to use Google, anyone else?
Tried both Goldeneye: Source and D.I.P.R.I.P and both still do not work. DIPRIP will launch and I can get to the menu, but anything else will crash.
Really sucks because these games ran fine in PlayOnLinux/Wine but I prefer running them in Steam. Just easier!
I think one of the largest issues here might be because there are spaces in Source SDK Base 2007
directory.
When trying to launch Base 2007 directly (with compatibility force set to Proton 6.3 or Experimental), this results:
GameAction [AppID 218, ActionID 3] : LaunchApp continues with user response "CreatingProcess"
/bin/sh\0-c\0/home/me/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=218 -- '/usr/games/steam/steamapps/common/SteamLinuxRuntime_soldier'/_v2-entry-point --verb=waitforexitandrun -- '/usr/games/steam/steamapps/common/Proton - Experimental'/proton waitforexitandrun '/usr/games/steam/steamapps/common/Source SDK Base 2007/hl2.exe' -game sourcetest -steam\0
Game update: AppID 218 "", ProcID 44867, IP 0.0.0.0:0
Starting app 218
>>> Adding process 44867 for game ID 218
GameAction [AppID 218, ActionID 3] : LaunchApp changed task to WaitingGameWindow with ""
GameAction [AppID 218, ActionID 3] : LaunchApp changed task to Completed with ""
pressure-vessel-wrap[44868]: W: Binding directories that are located under "/usr/" is not supported!
bwrap: Can't chdir to /usr/games/steam/steamapps/common/Source SDK Base 2007: No such file or directory
Game removed: AppID 218 "", ProcID 44867
Uploaded AppInterfaceStats to Steam
Exiting app 218
Specifically that bwrap
line towards the bottom, no such file or directory, is what I would expect if it was not escaping the spaces in the directory name.
For example:
$ ls /usr/games/steam/steamapps/common/Source\ SDK\ Base\ 2007
bin hl2 hl2.exe hlds_steamgames.vdf patches platform sourcetest srcds.exe steamclient.dll steam.dll tier0_s.dll vpks vstdlib_s.dll
versus
$ ls /usr/games/steam/steamapps/common/Source SDK Base 2007
ls: cannot access '/usr/games/steam/steamapps/common/Source': No such file or directory
ls: cannot access 'SDK': No such file or directory
ls: cannot access 'Base': No such file or directory
ls: cannot access '2007': No such file or directory
Hello @gigawatts, pressure-vessel is explicitly telling you the issue it's having with your system. Please see https://github.com/ValveSoftware/steam-runtime/blob/master/doc/steamlinuxruntime-known-issues.md#usrlocal.
Hello @gigawatts, pressure-vessel is explicitly telling you the issue it's having with your system. Please see https://github.com/ValveSoftware/steam-runtime/blob/master/doc/steamlinuxruntime-known-issues.md#usrlocal.
ah, interesting, I'll have to find a different mount point for my steamlib, thanks for pointing that out!
EDIT: yep, cool that allows sourcetest to load 👍
Downgraded to 5.13 since Experimental just makes the screen pitch black. Joining/creating MP servers doesn't work at all.
Using Gmod 11 classic
Using Ubuntu 20.04 Focal Fossa on a Dell Latitude E6430 ATG. Unable to attach logs because none were found under Source SDK Base or Gmod 11.
I tried to play the old 2012 mod version of Black Mesa which uses Source 2007 and it crashes on launch. steam-12487904729269010650.log Most relevent part seems to be:
29260.412:0124:0128:warn:seh:handle_syscall_fault backtrace: --- Exception 0xc0000005 at 0xec65041e: /home/andrius/.local/share/Steam/linux32/steamclient.so + 0x56641e.
29260.412:0124:0128:trace:seh:handle_syscall_fault returning to user mode ip=7a5eb89d ret=c0000005
29260.412:0124:0128:err:steamclient:steamclient_call Access violation in ISteamUserStats_STEAMUSERSTATS_INTERFACE_VERSION002_RequestCurrentStats.
29260.412:0124:0128:trace:seh:dispatch_exception code=c0000005 flags=0 addr=7BC4B288 ip=7bc4b288
29260.412:0124:0128:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
So some issue in steamclient.so
.
To reproduce download the original Part 1 and Part 2 of the mod. (the 'fixed' version on moddb is actually more broken because the people 'fixing' it didn't know what they're doing)
It need to be extracted into a folder named bms
in sourcemods
. Folder should NOT be named blackmesa
just because the zip is.
Replying to https://github.com/ValveSoftware/Proton/issues/2249#issuecomment-2132478523
Hi,
I've looked into this issue for Source SDK Base 2006 and i think i found the cause. The issue is caused by improper IPC mapping for the interface or failed porting attempt to a newer version of the interface. (or both lol) Old Source Engine games use the IClientUser::InitiateGameConnectionOld
(previously IClientUser::InitiateGameConnection
) interface to generate a userid ticket for authentication, and one of the issues mentioned above causes it to attempt to dereference appid + 4 inside steamclient.so
which makes it segfault. Fun fact, some games like Fortress Forever have an appid that's a valid memory location so it actually lets you connect to the server. One solution to this problem could be spoofing the appid passed to the InitiateGameConnection
, which is called from CSteam3Client::InitiateConnection
in engine.dll
. I've been able to modify engine.dll for SDK 06, specifically replace the instruction pushing the steam appid to the esi
register with a jmp instruction (to avoid issues with PE relocations) a bunch of bytes back into the int 3
block left over by MSVC (10h (16 dec) function alignment) and modify it there to something that'd be a valid memory location when dereferenced. That solution isn't really a great idea, because it only lets you join servers that are running outdated Steam binaries that don't really care about your SteamID and would let you in no matter what it is. The attached is a screenshot of GDB showcasing the attempted dereference of appid (stored in eax
+ 4). If anyone's interested I could attempt to modify SDK 2007 binaries in the same way I did for SDK 2006, but keep in mind that you won't be able to stay on the server for too long if at all. If you want to play SDK 06/07 games properly on Linux you'll need to install Steam inside wine so it completely skips the lsteamclient.dll IPC proxy thing.
Edit: I didn't realize that lsteamclient was open-source until I was done writing this, so now I am able to somewhat tell what's specifically broken, and that is older InitiateGameConnection taking a uint32_t as the appid instead of a CGameID.
@caatge Not sure why you're replying to me. I'm trying to run a single-player game. No joining servers here. Game crashes on launch for me.
Sorry, my bad, it's the first time I'm using the Github comments thing.
So I decided to waste more time debugging this and got it to auth properly without any sketchy workarounds that would make VAC mad and kick you. The actual reason was the difference between the Linux steamclient function prototype and the Windows function prototype. For some reason, the Linux steamclient.so
takes a CGameID*
instead of a CGameID
which in the end results in the Linux function being feeded 4 bytes on stack more than it needs to as well as a bad pointer. I made a small VSP (Valve Server Plugin, and yes, server plugins can be loaded on clients) which hooks the function doing the IPC call between the Unix side and the Windows side and does it correctly. More proper fix is yet to come by telling the lsteamclient
C file generator thing to somehow circumvent this issue. I'm going to leave the task of actually making this correction into the C file generator to someone else, as this is my first time dealing with anything Proton and Linux related and I have no experience with the codebase and barely any idea how it works. The small plugin (which is really hacky and bases on x86 patterns) can be found here: https://github.com/caatge/proton-sdk06.
Compatibility Report
System Information
I confirm:
steam-9856914317583057114.log
Symptoms
Hello,
Thank you for recently adding the option to force apps to use Proton. This makes it possible to launch Source 2007 mods on Steam for Linux. However, multiplayer mods are unable to create/join servers, or view achievements. The following were observed when playing a multiplayer mod:
Server Browser:
Steam Beta must be running to make use of Find Servers
Connect by IP:
The server requires that you be running Steam.
Create listen server:
CD Key authentication invalid for internet servers.
View achievements:
You must be logged in to Steam to unlock or view achievements
Reproduction