ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.24k stars 175 forks source link

Steam with symlinks crashing repeatedly in `steamwebhelper` on startup #10547

Closed 62832 closed 7 months ago

62832 commented 8 months ago

Similarly to issues #10431 and #10538 and immediately following installation of the new Steam update today, Steam consistently refuses to start up due to steamwebhelper crashing every time. Reinstalling Steam as a whole under its standard location does nothing to fix this either.

steamwebhelper.sh[11616]: === Wed 28 Feb 19:51:08 GMT 2024 ===
steamwebhelper.sh[11616]: Starting steamwebhelper under bootstrap sniper steam runtime at /extra/_/Games/Steam/ubuntu12_64/steam-runtime-sniper
exec ./steamwebhelper --no-sandbox -lang=en_US -cachedir=/extra/_/Games/Steam/config/htmlcache -steampid=6966 -buildid=1708985249 -steamid=76561198101579138 -logdir=/extra/_/Games/Steam/logs -uimode=7 -startcount=22 -steamuniverse=Public -realm=Global -clientui=/extra/_/Games/Steam/clientui -steampath=/extra/_/Games/Steam/ubuntu12_32/steam -launcher=0 -no-restart-on-ui-mode-change --enable-smooth-scrolling --password-store=basic --log-file=/extra/_/Games/Steam/logs/cef_log.txt --disable-quick-menu --disable-features=DcheckIsFatal
[0228/195109.116349:ERROR:context.cc(100)] The browser_subprocess_path directory (./steamwebhelper) is not an absolute path. Defaulting to empty.
[0228/195109.132847:WARNING:crash_reporting.cc(278)] Failed to set crash key: UserID with value: 0
[0228/195109.132886:WARNING:crash_reporting.cc(278)] Failed to set crash key: BuildID with value: 1708962035
[0228/195109.132890:WARNING:crash_reporting.cc(278)] Failed to set crash key: SteamUniverse with value: Public
[0228/195109.132894:WARNING:crash_reporting.cc(278)] Failed to set crash key: Vendor with value: Valve
[0228/195109.132897:WARNING:crash_reporting.cc(278)] Failed to set crash key: Platform with value: Linux
[0228/195109.133160:INFO:crash_reporting.cc(239)] Crash reporting enabled for process: browser
[0228/195109.134049:WARNING:task_impl.cc(32)] No task runner for threadId 0
[0228/195109.134856:WARNING:task_impl.cc(32)] No task runner for threadId 0
[0228/195109.150949:WARNING:crash_reporting.cc(278)] Failed to set crash key: UserID with value: 76561198101579138
[0228/195109.150950:WARNING:crash_reporting.cc(278)] Failed to set crash key: UserID with value: 76561198101579138
[0228/195109.151008:WARNING:crash_reporting.cc(278)] Failed to set crash key: BuildID with value: 1708985249
[0228/195109.151016:WARNING:crash_reporting.cc(278)] Failed to set crash key: BuildID with value: 1708985249
[0228/195109.151017:WARNING:crash_reporting.cc(278)] Failed to set crash key: SteamUniverse with value: Public
[0228/195109.151020:WARNING:crash_reporting.cc(278)] Failed to set crash key: SteamUniverse with value: Public
[0228/195109.151021:WARNING:crash_reporting.cc(278)] Failed to set crash key: Vendor with value: Valve
[0228/195109.151023:WARNING:crash_reporting.cc(278)] Failed to set crash key: Vendor with value: Valve
[0228/195109.151024:WARNING:crash_reporting.cc(278)] Failed to set crash key: Platform with value: Linux
[0228/195109.151026:WARNING:crash_reporting.cc(278)] Failed to set crash key: Platform with value: Linux
Gtk-Message: 19:51:12.732: Failed to load module "canberra-gtk-module"
TTimo commented 8 months ago

Hello @62832 - your logs report a Failed creating offscreen shared JS context error, try running steam with -cef-disable-gpu?

62832 commented 8 months ago

try running steam with -cef-disable-gpu?

Assuming I was supposed to invoke $ steam -cef-disable-gpu in a terminal, that still did nothing. New logs attached below for this attempt. steam-logs.tar.gz

TTimo commented 8 months ago

If your system is setup to collect crashes (coredumpctl) you could check for steamwebhelper crashes and provide the coredumpctl debug output for some of those?

62832 commented 8 months ago

Since I use a non-systemd based distribution, I do not have coredumpctl available. However, I can provide the most recent minidump that Steam / steamwebhelper seems to create under /tmp/dumps/, if that's of any use. dump.tar.gz

sballe73 commented 8 months ago

Got the same issue in ubuntu 22. from several issues discussions I tried -cef-disable-gpu, -system-composer but nothing worked.

steam.sh[107040]: Running Steam on ubuntu 22.04 64-bit steam.sh[107040]: STEAM_RUNTIME is enabled automatically setup.sh[107110]: Steam runtime environment up-to-date! steam.sh[107040]: Steam client's requirements are satisfied tid(107172) burning pthread_key_t == 0 so we never use it [2024-02-29 06:36:08] Startup - updater built Feb 29 2024 00:39:10 [2024-02-29 06:36:08] Startup - Steam Client launched with: '/home/sballe/.steam/debian-installation/ubuntu12_32/steam' '-nominidumps' '-nobreakpad' 02/29 06:36:08 Init: Installing breakpad exception handler for appid(steam)/version(1709168962)/tid(107172) [2024-02-29 06:36:08] Loading cached metrics from disk (/home/sballe/.steam/debian-installation/package/steam_client_metrics.bin) [2024-02-29 06:36:08] Failed to load cached hosts file (File 'update_hosts_cached.vdf' not found), using defaults [2024-02-29 06:36:08] Using the following download hosts for Public, Realm steamglobal [2024-02-29 06:36:08] 1. https://cdn.steamstatic.com, /client/, Realm 'steamglobal', weight was 1, source = 'baked in' [2024-02-29 06:36:08] Verifying installation... [2024-02-29 06:36:08] Verification complete UpdateUI: skip show logo Steam logging initialized: directory: /home/sballe/.steam/debian-installation/logs

XRRGetOutputInfo Workaround: initialized with override: 0 real: 0xf08879c0 XRRGetCrtcInfo Workaround: initialized with override: 0 real: 0xf08861f0 steamwebhelper.sh[107197]: === jeu. 29 févr. 2024 06:36:08 CET === steamwebhelper.sh[107197]: Starting steamwebhelper under bootstrap sniper steam runtime at /home/sballe/.steam/debian-installation/ubuntu12_64/steam-runtime-sniper CAppInfoCacheReadFromDiskThread took 0 milliseconds to initialize Steam Runtime Launch Service: starting steam-runtime-launcher-service Steam Runtime Launch Service: steam-runtime-launcher-service is running pid 107426 bus_name=com.steampowered.PressureVessel.LaunchAlongsideSteam steamwebhelper.sh[107601]: === jeu. 29 févr. 2024 06:36:19 CET === steamwebhelper.sh[107601]: Starting steamwebhelper under bootstrap sniper steam runtime at /home/sballe/.steam/debian-installation/ubuntu12_64/steam-runtime-sniper steamwebhelper.sh[107900]: === jeu. 29 févr. 2024 06:36:29 CET === steamwebhelper.sh[107900]: Starting steamwebhelper under bootstrap sniper steam runtime at /home/sballe/.steam/debian-installation/ubuntu12_64/steam-runtime-sniper src/steamUI/steamuisharedjscontroller.cpp (546) : Failed creating offscreen shared JS context src/steamUI/steamuisharedjscontroller.cpp (546) : Failed creating offscreen shared JS context 02/29 06:36:30 Init: Installing breakpad exception handler for appid(steam)/version(1709168962)/tid(107172) assert_20240229063630_28.dmp[108061]: Uploading dump (out-of-process) /tmp/dumps/assert_20240229063630_28.dmp assert_20240229063630_28.dmp[108061]: Finished uploading minidump (out-of-process): success = yes assert_20240229063630_28.dmp[108061]: response: CrashID=bp-afad04ff-aa0e-45ec-89c4-44a9a2240228 assert_20240229063630_28.dmp[108061]: file ''/tmp/dumps/assert_20240229063630_28.dmp'', upload yes: ''CrashID=bp-afad04ff-aa0e-45ec-89c4-44a9a2240228'' [2024-02-29 06:36:40] Shutdown

and from steamwebhelper log :

steamwebhelper.sh[107900]: === jeu. 29 févr. 2024 06:36:29 CET === steamwebhelper.sh[107900]: Starting steamwebhelper under bootstrap sniper steam runtime at /home/sballe/.steam/debian-installation/ubuntu12_64/steam-runtime-sniper exec ./steamwebhelper --no-sandbox -lang=en_US -cachedir=/home/sballe/.steam/debian-installation/config/htmlcache -steampid=107172 -buildid=1709168962 -steamid=0 -logdir=/home/sballe/.steam/debian-installation/logs -uimode=7 -startcount=2 -steamuniverse=Public -realm=Global -clientui=/home/sballe/.steam/debian-installation/clientui -steampath=/home/sballe/.steam/debian-installation/ubuntu12_32/steam -launcher=0 -use_safe_shutdown_workaround -use_xcomposite_workaround -no-restart-on-ui-mode-change --enable-smooth-scrolling --disable-gpu-compositing --disable-gpu --password-store=basic --log-file=/home/sballe/.steam/debian-installation/logs/cef_log.txt --disable-quick-menu --disable-features=DcheckIsFatal [0229/063629.911964:ERROR:context.cc(100)] The browser_subprocess_path directory (./steamwebhelper) is not an absolute path. Defaulting to empty. [0229/063629.927962:WARNING:crash_reporting.cc(278)] Failed to set crash key: UserID with value: 0 [0229/063629.927993:WARNING:crash_reporting.cc(278)] Failed to set crash key: BuildID with value: 1709167136 [0229/063629.927996:WARNING:crash_reporting.cc(278)] Failed to set crash key: SteamUniverse with value: Public [0229/063629.927999:WARNING:crash_reporting.cc(278)] Failed to set crash key: Vendor with value: Valve [0229/063629.928003:WARNING:crash_reporting.cc(278)] Failed to set crash key: Platform with value: Linux [0229/063629.928497:INFO:crash_reporting.cc(239)] Crash reporting enabled for process: browser [0229/063629.929327:WARNING:task_impl.cc(32)] No task runner for threadId 0 [0229/063629.930806:WARNING:task_impl.cc(32)] No task runner for threadId 0 [0229/063629.946381:WARNING:crash_reporting.cc(278)] Failed to set crash key: UserID with value: 0 [0229/063629.946379:WARNING:crash_reporting.cc(278)] Failed to set crash key: UserID with value: 0 [0229/063629.946434:WARNING:crash_reporting.cc(278)] Failed to set crash key: BuildID with value: 1709168962 [0229/063629.946438:WARNING:crash_reporting.cc(278)] Failed to set crash key: BuildID with value: 1709168962 [0229/063629.946439:WARNING:crash_reporting.cc(278)] Failed to set crash key: SteamUniverse with value: Public [0229/063629.946441:WARNING:crash_reporting.cc(278)] Failed to set crash key: SteamUniverse with value: Public [0229/063629.946442:WARNING:crash_reporting.cc(278)] Failed to set crash key: Vendor with value: Valve [0229/063629.946444:WARNING:crash_reporting.cc(278)] Failed to set crash key: Vendor with value: Valve [0229/063629.946445:WARNING:crash_reporting.cc(278)] Failed to set crash key: Platform with value: Linux [0229/063629.946446:WARNING:crash_reporting.cc(278)] Failed to set crash key: Platform with value: Linux

jhaand commented 8 months ago

I have somewhat the same problem with Debian Testing using a Radeon RX 5700. Should I open a new issue?

sballe73 commented 8 months ago

tried to launch manually the webhelper : LD_LIBRARY_PATH=ubuntu12_64 /home/sballe/.steam/debian-installation/ubuntu12_64/steamwebhelper --type=zygote --no-sandbox --enable-logging --v=1 --user-agent-product=Valve Steam Client --lang=en_US.UTF-8 --log-file=/home/sballe/.steam/debian-installation/logs/cef_log.txt --crashpad-handler-pid=225542 --buildid=1709168962 --steamid=0

while steam was trying to launch iun another shell. Got this error : [0100/000000.182219:ERROR:zygote_linux.cc(242)] Error reading message from browser: Opération de type socket sur un type non socket (88)

Could this be linked to the captive chromium ?

TTimo commented 8 months ago

@62832 I had not initially noticed this, and unfortunately you didn't mention it. It looks like there are symlinks in your setup? Could you detail what you are doing with /extra/_/Games and your home install? This is a likely cause of your problems.

TK009 commented 8 months ago

@TTimo I have similar problem and I have symlinked my ~/.local to another disk, because I ran out of space on my home. Are you saying this kind of symlink is not allowed anymore or is there some fix?

62832 commented 8 months ago

I had not initially noticed this, and unfortunately you didn't mention it. It looks like there are symlinks in your setup? Could you detail what you are doing with /extra/_/Games and your home install? This is a likely cause of your problems.

@TTimo My home partition is on an HDD, whereas I keep Steam installed on a separate NVMe SSD mounted under /extra. I also keep my standard XDG base dirs as symlinks to an extra/_/XDG directory. Thing is, this setup has not caused a single issue up until the new Steam update dropped.

TTimo commented 8 months ago

We typically fix issues caused by symbolic link setups when we come across them, but that'll always be prone to breaking. We do not recommend this.

ondradoksy commented 8 months ago

@62832 I had not initially noticed this, and unfortunately you didn't mention it. It looks like there are symlinks in your setup? Could you detail what you are doing with /extra/_/Games and your home install? This is a likely cause of your problems.

@TTimo I have the same issue without any symlinks.

siborg commented 8 months ago

I am having the same issue with or without -cer-disable-gpu - no symlinks in my case - I have 3 game libraries on separate drives though (no symlinks involved, just full paths). Crashing for me every time since the last non-beta update

jhaand commented 8 months ago

My issue also had problems with symlinks. Fixed it by removing them since it was only the ~/.config directory. See issue: https://github.com/ValveSoftware/steam-for-linux/issues/10552

smcv commented 8 months ago

(Cross-posted from #10552)

As a general piece of advice for anyone experiencing an issue similar to this one, symlinks are not ideal as a mechanism for offloading sections of the filesystem to a different disk, because they are application-visible, and in particular they interfere with container technologies. Mount points and bind-mounts will be less likely to cause strange application behaviour.

The reason this became an issue recently is that previously the Steam user interface used an LD_LIBRARY_PATH-based environment to provide its dependencies (which mostly worked, but wasn't completely reliable, and meant that the dependencies available were stuck in 2015). Since this week (or earlier for beta users), it uses the same container technology as Proton, CS2 and Dota 2 to ensure that it can rely on relatively modern dependency versions, even on older host operating systems like Ubuntu oldoldLTS.

Symbolic links are a particularly frequent problem for container frameworks like the Steam Linux Runtime, because merely bind-mounting $HOME into the container is not enough to get the target of the symlink into the container as well: we have to go looking for the target of the symlink. It is not feasible to search through the entire home directory for symlinks and share the target of every symlink, because that would delay Steam startup by a lot (and that approach would also involve searching through parts of the home directory that are nothing to do with Steam, which seems bad for user privacy).

If the container framework knows about specific locations that need to exist - for instance $XDG_CONFIG_HOME/cef_user_data, which might be the one causing this issue - then those can be handled by having a list of special cases. Again, the longer that list is, the slower it will be to start Steam, so we should try to keep this in proportion. At the moment our list includes ~/.steam and the Steam installation directory (typically ~/.local/share/Steam or ~/.steam/debian-installation), but not $XDG_CONFIG_HOME/cef_user_data. Adding a similar special case for $XDG_CONFIG_HOME/cef_user_data and some other important directories is in progress, tracked as steamrt/tasks#411 internally.

There are some target directories that should usually work even though we don't have a special case for the symlink, because we do have a special case for the target: anything below /home, /opt, /media, /mnt, /run/media or /srv. (Full list: https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/shared-paths.md?ref_type=heads#similar-to-the-home-directory)

There are also some target directories that we can't ever use for technical reasons, even if the symlink that points to them is on our list. Anything below /usr is the most notable example. (Full list: https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/shared-paths.md?ref_type=heads)

Anything that is not on either of those lists, for example non-standardized mount points like /extra, /games or /ssd, will not work without specific action being taken (either by users or by the Steam Linux Runtime framework).

smcv commented 8 months ago

@ondradoksy:

I have the same issue without any symlinks

There are several situations that can cause the steamwebhelper not to work. For this particular issue, the only one that is in-scope is if there are symlinks in locations that are important to Steam (some of which are not immediately obvious, like ~/.config). For any other "Steamwebhelper is not responding" scenarios, please take them to a separate issue report.

Anyone else who is experiencing the "Steamwebhelper is not responding" dialog, please check the Steam logs for more information (Flatpak users: ~/.var/app/com.valvesoftware.Steam/.local/share/Steam/logs, Snap users: ~/snap/steam/common/.local/share/Steam/logs, everyone else: ~/.steam/root/logs). steamwebhelper.log is likely to be the most important log file.

If your symptoms and logs match symptoms and logs seen by other users, you can subscribe to an existing bug report without adding comments by using the "Notifications" panel. You can help us to solve bugs more quickly by only replying if you have new information.

smcv commented 8 months ago

I am having the same issue with or without -cer-disable-gpu - no symlinks in my case

According to #10552, this turned out not to be true: the root cause seems to have been ~/.config being a symlink to somewhere else.

sballe73 commented 8 months ago

it worked, it was the symlink on .config that I changed now for a mount --bind. but nothing in the logs was aiming to it...

62832 commented 8 months ago

Can confirm. I've swapped out the symlinks I had for ~/.cache, ~/.config and ~/.local in favour of bind mounts from the same respective extra/_/XDG/... locations and Steam now works again. Thanks for the heads-up, @smcv!

davispuh commented 8 months ago

Okay so turns out my crash was same reason due to symlinked ~/.config to /fasthome/*/.config

running STEAM_COMPAT_MOUNTS=/fasthome steam makes Steam work fine.

I have $HOME split between /home and /fasthome but seems only ~/.config causes crash. Anyway it's still bug because log file doesn't indicate anything about Steam trying to look for /fasthome which it should say as then it would make it more clear whats wrong.

^ This is reposted since I commented in wrong issue.

TK009 commented 8 months ago

Changing only ~/.config from symbolic link to bind mount also seems to be enough to get it working.

smcv commented 8 months ago

We typically fix issues caused by symbolic link setups when we come across them

For ~/.config as used by the steamwebhelper, I think I can see how to address this. (Note for Steam Runtime developers: This is tracked as steamrt/tasks#411 internally.)

but that'll always be prone to breaking. We do not recommend this.

This will still be true. Bind-mounts are always going to be more reliable at a container boundary than symlinks.

log file doesn't indicate anything about Steam trying to look for /fasthome

The container runtime framework cannot solve this part, so that would be a request for steamwebhelper or CEF: "should log something useful if it tries and fails to dereference a dangling symlink at ~/.config or ~/.config/cef_user_data". Unfortunately, the code that uses ~/.config/cef_user_data is probably buried somewhere inside CEF.

StarterX4 commented 8 months ago

In my case, having just Steam's dirs symlinked works fine.

[starterx4@doadgrz ~]$ pwd; file {.steam,.local/share/Steam}
/home/starterx4
.steam:             symbolic link to /kesz/Steam
.local/share/Steam: symbolic link to /kesz/Steam/steam
smcv commented 7 months ago

For ~/.config as used by the steamwebhelper, I think I can see how to address this. (Note for Steam Runtime developers: This is tracked as steamrt/tasks#411 internally.)

This change went out in a Steam release recently (yesterday?) so it should now be fixed. The same change preemptively addresses a list of other locations that could conceivably have the same problem, like ~/.local/share.

The original reporter of this issue, @62832, already said that turning their symlinks into bind-mounts avoided this crash for them, so I think we can consider this particular issue report to be solved.

For commenters who are not @62832, if you are still having trouble with Steam crashing during startup, I think we will get the best signal-to-noise ratio (and therefore highest chance that things can be fixed soon) if you can report those issues separately with full details, including any error messages that appear in steamwebhelper.log (Flatpak users: ~/.var/app/com.valvesoftware.Steam/.local/share/Steam/logs, Snap users: ~/snap/steam/common/.local/share/Steam/logs, everyone else: ~/.steam/root/logs).

62832 commented 7 months ago

Can confirm that this issue has been resolved. I've switched back from bind mounts to symlinks for ~/.config, ~/.local and ~/.cache and Steam now continues to launch again.

Shall this be closed as resolved?

smcv commented 7 months ago

Shall this be closed as resolved?

Yes please.

DocMAX commented 7 months ago

My home dir /home/user is a symlink, is it the same problem like have a symlink on .config?