ValveSoftware / steam-for-linux

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

After latest Steam beta update (2021-09-29), Steam reinstalled all Proton versions into prefix with appid = 0 #8114

Open kakra opened 2 years ago

kakra commented 2 years ago

Your system information

Please describe your issue in as much detail as possible:

Yesterday, after I rebooted my computer and launched Steam, I noticed a high system load and high IO activity. Watching the process monitor, it looked like Steam reinstalled each and every Proton version that existed in my compat tools folder (including the official ones) into a prefix with appid = 0. It spawned wineserver, bwrap, pressure-vessel and steam-runtime processes repeatedly for each Proton version in my Steam installation causing a high system load in the process. It also asked if I want to download and install the wine-mono 6.4 package, and complained about a "file not found" issue (both dialogs were native wine dialogs). This whole process took about half an hour, during this time, it was not possible to launch other games: They would just sit in starting state with Proton showing a dialog that it is starting the game. Even after the system calmed down again, Steam didn't launch the game queued for starting, I had to force-close it, then tried again and it worked.

Steps for reproducing this issue:

  1. Start your computer
  2. Launch Steam Beta from an installation before version 2021-09-29
  3. Watch htop to see wine prefix installation for multiple Proton versions into appid = 0
kisak-valve commented 2 years ago

Hello @kakra, this reads like it's part of "Reduced sizes of Vulkan pre-caching datasets by splitting and versioning them according to Proton versions and graphics driver capabilities. As a result, the datasets will start from scratch for this Beta." in the 2021-09-28 Steam client beta update.

As far as I understand, this is not an installation process but Steam figuring out which shader data sets are relevant to your system and this should complete fairly quickly, without any prompts or warnings. Are you able to figure out which Proton versions made those dialog boxes? Are third party Proton version involved? There should also be corresponding lines in Steam's shader pre-cache log at ~/.local/share/Steam/logs/shader_log.txt.

kakra commented 2 years ago

I think it's difficult to figure out what was causing the dialog boxes in the aftermath. I'm only sure about one dialog which asked "Do you want to run protontricks?" - and that's probably from some TkG or GE Proton build. So yes, third party Protons were involved.

But I was also seeing Proton 6.3 running some installer routines against prefix "0". After all this was done, I simply removed directory "0" in the compatdata folder to clean up. I don't think 0 is a valid appid. And I also removed all or most of the custom Proton builds - they were piling up since 2019, and I mostly only use Experimental now with a very few exceptions.

I'll take a look at the shader log once I'm back to my home system.

gardotd426 commented 2 years ago

Seeing this issue as well. It's persisted across multiple Steam launches.

EDIT: Actually it seems like it happens every time I run a game. As in, every time I try to launch a game, I will get multiple wineprefix update windows for ~/.steam/root/steamapps/compatdata/0/pfx.

Like, I just launched Doom Eternal, and 5 minutes later I'm still getting update windows popping up and closing and several wine processes spamming in and out of existence in htop.

kakra commented 2 years ago

@kisak-valve

There should also be corresponding lines in Steam's shader pre-cache log

I'll take a look at the shader log once I'm back to my home system.

shader_log.previous.txt.gz (the important logs should be from Sep, 29th and maybe early 30th)

I think the important stuff started here:

[2021-09-29 20:03:41] Current buckets changed! Pruning old entries.
[2021-09-29 20:03:41] Attempting to find current bucket (compat tool: 'Proton-4.21-GE-2'); temporary dir: /home/kakra/.local/share/Steam/shader_cache_temp_dir_d3d11_64
[2021-09-29 20:03:41] Pruning done.

From there it repeats for every Proton version. But that doesn't indicate that it did anything with the prefixes. So I created another pack of logs from around the same time with: grep '2021-09-29 20:' *.txt | sort -sk2:

log-2021-09-29_20.txt.gz (each log line contains the origin file name, stable-sorted by time)

kakra commented 2 years ago

I found my Steam client crashed this morning (that issue is probably already tracked multiple times).

After restart, it ran all installed Proton versions through the prefix installer again, creating prefix 0 again for each Proton version. It only took a few minutes this time because I cleaned up unused Proton versions before.

Steam was unresponsive while doing that (I wasn't able to launch the library from the right-click menu in the tray).

Watching the process monitor, I found that bwrap and pressure-vessel ran, including wineserver, explorer.exe and other processes - especially there was one longer running process called something like "wine d3d device enum" (don't remember the exact name). All these invocations ran for prefix with appid = 0.

This prefix has config_info:

6.3-3
/home/kakra/.local/share/Steam/steamapps/common/Proton 6.3/dist/share/fonts/
/home/kakra/.local/share/Steam/steamapps/common/Proton 6.3/dist/lib/
/home/kakra/.local/share/Steam/steamapps/common/Proton 6.3/dist/lib64/
/home/kakra/.local/share/Steam
1633127938.0
1633127942.0
1516738214.0
/home/kakra/.local/share/Steam/steamapps/common/Proton 6.3/dist/share/default_pfx/
1633030452.0
False
True
d3dcompiler_*.dll,d3dcsx*.dll,d3dx*.dll,x3daudio*.dll,xactengine*.dll,xapofx*.dll,xaudio*.dll,xinput*.dll,atl1*.dll,concrt1*.dll,msvcp1*.dll,msvcr1*.dll,vcamp1*.dll,vcomp1*.dll,vccorlib1*.dll,vcruntime1*.dll,ntdll.dll,vulkan-1.dll
False

I think Proton 6.3 didn't update to 6.3-7 yet for me because I didn't run any games with it - only used Experimental. I've seen the installation for prefix 0 being run last with Proton 6.3 when I looked at the process monitor. I've attached an ls -alR of the prefix, maybe it helps discovering the issue.

prefix-0.txt.gz shader_log-20211004.txt.gz sysinfo.txt

kakra commented 2 years ago

It looks like Steam is running d3ddriverquery.exe for each and every Proton version on each Steam start. The associated appid is 0.

kakra commented 2 years ago

FWIW, I'm seeing these files in the shadercache of appid 0:

/mnt/xfs-storage/kakra/shadercache/0/DXVK_state_cache/FC3UpdaterSteam.dxvk-cache
/mnt/xfs-storage/kakra/shadercache/0/DXVK_state_cache/FCPrimal.dxvk-cache
/mnt/xfs-storage/kakra/shadercache/0/DXVK_state_cache/HellbladeGame-Win64-Shipping.dxvk-cache
/mnt/xfs-storage/kakra/shadercache/0/DXVK_state_cache/PathOfExile_x64Steam.dxvk-cache
/mnt/xfs-storage/kakra/shadercache/0/DXVK_state_cache/SOTTR.dxvk-cache
/mnt/xfs-storage/kakra/shadercache/0/DXVK_state_cache/ShadowOfWar.dxvk-cache
/mnt/xfs-storage/kakra/shadercache/0/DXVK_state_cache/StormGame-Win64-Shipping.dxvk-cache
/mnt/xfs-storage/kakra/shadercache/0/DXVK_state_cache/Swag and Sorcery.dxvk-cache
/mnt/xfs-storage/kakra/shadercache/0/DXVK_state_cache/TheTechnomancer.dxvk-cache
/mnt/xfs-storage/kakra/shadercache/0/DXVK_state_cache/UplayService.dxvk-cache
/mnt/xfs-storage/kakra/shadercache/0/DXVK_state_cache/farcry3.dxvk-cache

I haven't even played those in a while, actually, this is the output of find -type f -mtime +90.

Macribit commented 2 years ago

Here on Ubuntu 20.04.2 I also had this issue everytime I fired up Steam an explorer.exe window will open on the root of the steam installation, also had a protonfixes dialog spamming up. I solved the issue, I had quite a lot of proton installations, don't know which one was the culprit, but I removed all these

-

also removed some official old protons, 5.0, 3.7 beta, and 3.6 but I don't think those were causing the issue.

Also after that at steam settings on steam play submenu I set up proton experimental as the default proton, just in case steam settings was picking up an incorrect steam play default proton version.

I'm not totally sure if it is Proton GE or Proton TKG fault, also on some proton installations I remember replacing some files and links, (like seding some scripts to use wine32 instead of wine64) could be also that those proton installations were borked by my own.

g2p commented 2 years ago

For me I get d3ddriverquery with appid 0 triggering mono prompts after the following lines in

tail -F ~/.steam/logs/shader_log.txt

[2021-11-04 11:47:36] Attempting to find current bucket (compat tool: 'proton_63'); temporary dir: ~/.steam/shader_cache_temp_dir_d3d11_64

And again after:

[2021-11-04 11:59:12] Attempting to find current bucket (compat tool: 'proton_experimental'); temporary dir: ~/.steam/shader_cache_temp_dir_d3d11_64

(D3D11 and Proton 6.3 or experimental)

Moving both Proton installs (6.3 and experimental) away in …/steamapps/common removed the symptoms, whereas doing an integrity check or reinstalling those proton versions didn't.

Surprisingly, disabling shader caching and nuking the …/steamapps/shadercache directory had no effect either.

kakra commented 2 years ago

Moving these Proton installs (both 6.3 and experimental) away in …/steamapps/common removed the symptoms, whereas doing an integrity check or reinstalling those proton versions didn't.

Maybe Steam runs some sort of discovery when it launches by looking at each directory in steamapps/common and determines the appid. I don't expect Proton versions to really have an appid while they are installed here, and so it traverses these directories and triggers some action on it.

I'm also seeing Proton versions sometimes pop-up in my library as games that I played - and they have just a plain grey rectangle as icon. That can usually be triggered when Proton versions are listed as updates in the download queue and manually started for download. After the update, it would show up as a game for some time. Maybe both these anomalies have the same underlying cause?

mkrupczak3 commented 2 years ago

bump

mkrupczak3 commented 2 years ago

Gonna try moving my Proton 6.3 folders somewhere else. Otherwise, would be helpful if a mitigation technique or way to determine guilty proton version is found

This is preventing me from running Steam or any of my Steam games rn as is

mkrupczak3 commented 2 years ago

I tried moving Proton 6.3 out of my compatibilitytools.dd directory to no avail. Thousands of explorer.exe threads are spun up a few minutes after starting Steam

Happy to provide log files and screenshots capturing this issue from HTOP in terminal

mkrupczak3 commented 2 years ago

This is affecting me in a really bad way. Starts about 3-4 minutes after launching steam, maxes out all 32Gb of my RAM and eats up Swap and CPU time until the system crashes.

The parent process that spawns the thousands of instances of explorer.exe appears to be /usr/lib/pressure-vessel/from-host/bin/pressure-vessel-adverb. Looking at the full invocation of this process, it appears Proton 5.21-GE-1 may be the bugged version of Proton causing this issue

I'll look at GE's GitHub separately, but I still recommend some form of mitigation be implemented from Steam's side. This is pretty serious

Screenshot from 2021-12-08 16-05-00

gardotd426 commented 2 years ago

Remove Proton-5.21-GE from your system, then restart Steam and see if the issue persists. If the issue doesn't appear, then this isn't a Steam issue, and there's nothing to "fix." Valve obviously don't support third-party versions of Proton, and both GE and TKG explicitly say that if you encounter issues with their Proton builds that don't occur with official ones, report the issue to them and not Valve.

From the Proton-GE README

If you have an issue that happens with my proton-GE build, provided FROM this repository, that does -not- happen on Valve's proton, please DO NOT open a bug report on Valve's bug tracker.

This can't really be made any more clear. Remove that version of Proton, launch Steam, and see if the issue persists. If it does, report it to Valve. If it does not, report it to GE, and not Valve.

mkrupczak3 commented 2 years ago

Fair enough. Deleting rm -rf 5.21-GE-1 from my compatibility.dd Seems to have fixed the issue. Will report to Proton GE dev

This seems kinda serious and maybe could be a bug with how Steam invokes routine processes for optimizing games in the background, making shader caches, etc.

I'd hope it's an issue with GE and not Steam, but it's probably still too early to tell

GloriousEggroll commented 2 years ago

Removed 5.21-GE-1 from my releases.