protonscr

Steam ends up in crash loop if steam-runtime-sniper.tar.xz is corrupted

steamclosed
ValveSoftware/steam-for-linux#11602 · opened 2024-12-26 by btuin · updated 2025-03-08 · 6 comments · github
Bbtuin 2024-12-26 github

Your system information

  • Steam client version (build number or date): Startup - updater built Dec 2 2024 21:26:10
  • Distribution (e.g. Ubuntu): Archlinux (install with flatpak)
  • Opted into Steam client beta?: No
  • Have you checked for system updates?: Irrelevant
  • Steam Logs: Partially in French, sorry!
Ouput of `flatpak run com.valvesoftware.Steam`
INFO:root:https://github.com/flathub/com.valvesoftware.Steam/wiki
INFO:root:Will set XDG dirs prefix to /home/btuin
DEBUG:root:Checking input devices permissions
INFO:root:Overriding TZ to Europe/Paris
steam.sh[2]: Running Steam on org.freedesktop.platform 24.08 64-bit
steam.sh[2]: STEAM_RUNTIME is enabled automatically
setup.sh[48]: Steam runtime environment up-to-date!
steam.sh[2]: Steam client's requirements are satisfied
CProcessEnvironmentManager is ready, 6 preallocated environment variables.
[2024-12-26 20:36:23] Startup - updater built Dec  2 2024 21:26:10
[2024-12-26 20:36:23] Startup - Steam Client launched with: '/home/btuin/.local/share/Steam/ubuntu12_32/steam' '-srt-logger-opened' '-no-cef-sandbox'
12/26 20:36:23 minidumps folder is set to /tmp/dumps
12/26 20:36:23 Init: Installing breakpad exception handler for appid(steam)/version(1733265492)/tid(94)
[2024-12-26 20:36:23] Loading cached metrics from disk (/home/btuin/.local/share/Steam/package/steam_client_metrics.bin)
[2024-12-26 20:36:23] Using the following download hosts for Public, Realm steamglobal
[2024-12-26 20:36:23] 1. https://client-update.fastly.steamstatic.com, /, Realm 'steamglobal', weight was 900, source = 'update_hosts_cached.vdf'
[2024-12-26 20:36:23] 2. https://client-update.akamai.steamstatic.com, /, Realm 'steamglobal', weight was 100, source = 'update_hosts_cached.vdf'
[2024-12-26 20:36:23] 3. https://client-update.steamstatic.com, /, Realm 'steamglobal', weight was 1, source = 'baked in'
[2024-12-26 20:36:23] Vérification de l'installation…
[2024-12-26 20:36:23] Verification complete
UpdateUI: skip show logo
Steam logging initialized: directory: /home/btuin/.local/share/Steam/logs

XRRGetOutputInfo Workaround: initialized with override: 0 real: 0xecd097b0
XRRGetCrtcInfo Workaround: initialized with override: 0 real: 0xecd08000
steamwebhelper.sh[112]: Using supervisor /home/btuin/.steam/root/ubuntu12_32/steam-runtime/amd64/usr/bin/steam-runtime-supervisor
steamwebhelper.sh[112]: Starting steamwebhelper under bootstrap sniper steam runtime via /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.sh
steam-runtime-sniper.sh[132]: Extracting /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.tar.xz to /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.new
Steam Runtime Launch Service: starting steam-runtime-launcher-service
Steam Runtime Launch Service: steam-runtime-launcher-service is running pid 179
bus_name=com.steampowered.PressureVessel.LaunchAlongsideSteam
xz : (stdin): Les données compressées sont corrompues
tar: Fin prématurée rencontrée dans l'archive.
tar: Fin prématurée rencontrée dans l'archive.
tar: Error is not recoverable: exiting now
steamwebhelper.sh[244]: Using supervisor /home/btuin/.steam/root/ubuntu12_32/steam-runtime/amd64/usr/bin/steam-runtime-supervisor
steamwebhelper.sh[244]: Starting steamwebhelper under bootstrap sniper steam runtime via /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.sh
steam-runtime-sniper.sh[259]: Extracting /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.tar.xz to /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.new
xz : (stdin): Les données compressées sont corrompues
tar: Fin prématurée rencontrée dans l'archive.
tar: Fin prématurée rencontrée dans l'archive.
tar: Error is not recoverable: exiting now
steamwebhelper.sh[323]: Using supervisor /home/btuin/.steam/root/ubuntu12_32/steam-runtime/amd64/usr/bin/steam-runtime-supervisor
steamwebhelper.sh[323]: Starting steamwebhelper under bootstrap sniper steam runtime via /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.sh
steam-runtime-sniper.sh[338]: Extracting /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.tar.xz to /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.new
src/steamUI/steamuisharedjscontroller.cpp (666) : Failed creating offscreen shared JS context
src/steamUI/steamuisharedjscontroller.cpp (666) : Failed creating offscreen shared JS context
12/26 20:36:48 Init: Installing breakpad exception handler for appid(steam)/version(1733265492)/tid(94)
assert_20241226203648_29.dmp[389]: Uploading dump (out-of-process)
assert_20241226203648_29.dmp[389]: Uploading dump (out-of-process)
/tmp/dumps/assert_20241226203648_29.dmp

/tmp/dumps/assert_20241226203648_29.dmp
xz : (stdin): Les données compressées sont corrompues
tar: Fin prématurée rencontrée dans l'archive.
tar: Fin prématurée rencontrée dans l'archive.
tar: Error is not recoverable: exiting now
assert_20241226203648_29.dmp[389]: Finished uploading minidump (out-of-process): success = yesassert_20241226203648_29.dmp[389]: Finished uploading minidump (out-of-process): success = yes


assert_20241226203648_29.dmp[389]: response: CrashID=bp-40f73840-9f8f-4d05-89be-ff5382241226

assert_20241226203648_29.dmp[389]: response: CrashID=bp-40f73840-9f8f-4d05-89be-ff5382241226
assert_20241226203648_29.dmp[389]: file ''/tmp/dumps/assert_20241226203648_29.dmp'', upload yes: ''CrashID=bp-40f73840-9f8f-4d05-89be-ff5382241226''
assert_20241226203648_29.dmp[389]: file ''/tmp/dumps/assert_20241226203648_29.dmp'', upload yes: ''CrashID=bp-40f73840-9f8f-4d05-89be-ff5382241226''

steamwebhelper.sh[409]: Using supervisor /home/btuin/.steam/root/ubuntu12_32/steam-runtime/amd64/usr/bin/steam-runtime-supervisor
steamwebhelper.sh[409]: Starting steamwebhelper under bootstrap sniper steam runtime via /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.sh
steam-runtime-sniper.sh[424]: Extracting /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.tar.xz to /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.new
xz : (stdin): Les données compressées sont corrompues
tar: Fin prématurée rencontrée dans l'archive.
tar: Fin prématurée rencontrée dans l'archive.
tar: Error is not recoverable: exiting now
Desktop state changed: desktop: { pos:    0,   0 size: 1920,1080 } primary: { pos:    0,   0 size: 1920,1080 }
Caching cursor image for left_ptr, size 24x24, serial 125, cache size = 0
fsync: up and running.
wine: RLIMIT_NICE is <= 20, unable to use setpriority safely
Fossilize INFO: Overriding serialization path: "/home/btuin/.local/share/Steam/shader_cache_temp_dir_d3d11_64/fozpipelinesv6/steamapprun_pipeline_cache".
Initializing D3D11.
Unable to read VR Path Registry from C:\users\steamuser\AppData\Local\openvr\openvrpaths.vrpath
fsync: up and running.
wine: RLIMIT_NICE is <= 20, unable to use setpriority safely
Fossilize INFO: Overriding serialization path: "/home/btuin/.local/share/Steam/shader_cache_temp_dir_d3d12_64/fozpipelinesv6/steamapprun_pipeline_cache".
steamwebhelper.sh[625]: Using supervisor /home/btuin/.steam/root/ubuntu12_32/steam-runtime/amd64/usr/bin/steam-runtime-supervisor
steamwebhelper.sh[625]: Starting steamwebhelper under bootstrap sniper steam runtime via /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.sh
Initializing D3D12.
D3D12CreateDevice failed with error 0x80070057
Unable to read VR Path Registry from C:\users\steamuser\AppData\Local\openvr\openvrpaths.vrpath
steam-runtime-sniper.sh[646]: Extracting /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.tar.xz to /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.new
xz : (stdin): Les données compressées sont corrompues
tar: Fin prématurée rencontrée dans l'archive.
tar: Fin prématurée rencontrée dans l'archive.
tar: Error is not recoverable: exiting now
steamwebhelper.sh[710]: Using supervisor /home/btuin/.steam/root/ubuntu12_32/steam-runtime/amd64/usr/bin/steam-runtime-supervisor
steamwebhelper.sh[710]: Starting steamwebhelper under bootstrap sniper steam runtime via /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.sh
steam-runtime-sniper.sh[725]: Extracting /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.tar.xz to /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.new
xz : (stdin): Les données compressées sont corrompues
tar: Fin prématurée rencontrée dans l'archive.
tar: Fin prématurée rencontrée dans l'archive.
tar: Error is not recoverable: exiting now
src/steamUI/steamuisharedjscontroller.cpp (666) : Failed creating offscreen shared JS context
src/steamUI/steamuisharedjscontroller.cpp (666) : Failed creating offscreen shared JS context
reaping pid: 409 -- unknown
src/steamexe/main.cpp (319) : Assertion Failed: ReapProcess: waitid failed: 'No child processes'. Possibly leaking a zombie.

src/steamexe/main.cpp (319) : Assertion Failed: ReapProcess: waitid failed: 'No child processes'. Possibly leaking a zombie.

12/26 20:37:22 Init: Installing breakpad exception handler for appid(steam)/version(1733265492)/tid(94)
assert_20241226203722_35.dmp[790]: Uploading dump (out-of-process)
/tmp/dumps/assert_20241226203722_35.dmp

assert_20241226203722_35.dmp[790]: Uploading dump (out-of-process)
/tmp/dumps/assert_20241226203722_35.dmp
steamwebhelper.sh[796]: Using supervisor /home/btuin/.steam/root/ubuntu12_32/steam-runtime/amd64/usr/bin/steam-runtime-supervisor
steamwebhelper.sh[796]: Starting steamwebhelper under bootstrap sniper steam runtime via /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.sh
steam-runtime-sniper.sh[811]: Extracting /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.tar.xz to /home/btuin/.local/share/Steam/ubuntu12_64/steam-runtime-sniper.new
assert_20241226203722_35.dmp[790]: Finished uploading minidump (out-of-process): success = yes

assert_20241226203722_35.dmp[790]: Finished uploading minidump (out-of-process): success = yes
assert_20241226203722_35.dmp[790]: response: CrashID=bp-25913a57-5d39-46ea-beb5-45f822241226

assert_20241226203722_35.dmp[790]: file ''/tmp/dumps/assert_20241226203722_35.dmp'', upload yes: ''CrashID=bp-25913a57-5d39-46ea-beb5-45f822241226''

assert_20241226203722_35.dmp[790]: response: CrashID=bp-25913a57-5d39-46ea-beb5-45f822241226
assert_20241226203722_35.dmp[790]: file ''/tmp/dumps/assert_20241226203722_35.dmp'', upload yes: ''CrashID=bp-25913a57-5d39-46ea-beb5-45f822241226''
xz : (stdin): Les données compressées sont corrompues
tar: Fin prématurée rencontrée dans l'archive.
tar: Fin prématurée rencontrée dans l'archive.
tar: Error is not recoverable: exiting now
[2024-12-26 20:37:30] Shutdown
  • GPU: Irrelevant

Please describe your issue in as much detail as possible:

When I tried to run Steam the extraction of the runtime failed, Steam crashed and it immediately tried again with the same result in loop.
After some investigations it turned out that the archive steam-runtime-sniper.tar.xz was corrupted (running the command xz --test on the archive gave xz: steam-runtime-sniper.tar.xz: Compressed data is corrupt.
So I deleted the this file and started Steam again and everything worked like it should.
This file is located in the directory ~/.var/app/com.valvesoftware.Steam/local/share/Steam/ubuntu12_64 when using flatpak, and I suppose in ~/.local/share/Steam/ubuntu12_64 otherwise.

I don't know how that happened but it seems that I downloaded a corrupted version of steam-runtime-sniper.tar.xz. After deleting it and starting Steam a sane one was downloaded. By comparing the corrupted version of the file and the sane version, it turns out that there is exactly one bit that is different:

 04784230: d412 3482 4f70 faad b226 0fae 95c1 5d10  ..4.Op...&....].
 04784240: 122f 6ca2 b8f9 ff21 e7bb f23f 5450 8b8e  ./l....!...?TP..
 04784250: c7fb 06ff 4b3a 9003 970f b6bf 68d1 d79a  ....K:......h...
-04784260: 0764 6af6 d5fb 8254 b9a3 1f62 5cd6 00f1  .dj....T...b\...
+04784260: 0764 6af6 d5fb 8254 bda3 1f62 5cd6 00f1  .dj....T...b\...
 04784270: 5c33 c570 1ff4 90d4 cfab ac45 dfd3 f7fe  \3.p.......E....
 04784280: a5b8 e0b6 78a4 da64 fbfe cdd6 b0e8 bf66  ....x..d.......f
 04784290: ee17 6f3d 0d7c efb1 2f18 62c0 ec3e 0e6f  ..o=.|../.b..>.o

The corrupted version has the sha256 a6ab758945c52e60c17c02ad9dafd2b00b4e16c717da29532bd7ed6a72528516, the sane version has bc5f9ff12b7c1901326945bce85f6dccca6c4e29f1bdc00d732f6306e903b100.

In the end the issue here is not really that I got a corrupted version of the file, but that Steam is completely unable to recover in such case.

Steps for reproducing this issue:

  1. Somehow get a corrupted version of steam-runtime-sniper.tar.xz
  2. Start Steam
TTTimo 2025-01-02 github

hello @btuin,

Would you mind providing your steam logs for this? I don't know how easily you can reproduce, ideally we'd try to figure out where you got the corrupted download from if it's still in your logs.

@smcv it seems we're not able to recover from a corrupted sniper download, is this a problem with the types of checksums we are doing? That has been a problem in the past but of course we can never reproduce the actual corruption. We might have to force this for testing.

Ssmcv 2025-01-03 github

it seems we're not able to recover from a corrupted sniper download

I thought the Steam client bootstrap/upgrade machinery was responsible for validating and if necessary re-downloading ubuntu12_64/steam-runtime-sniper.tar.xz and other related files - certainly when I'm testing new proposed versions of sniper, I have to use the (intentionally undocumented) command-line option that turns off that validation, and when I stop using that option and restart Steam, it automatically re-downloads the production version for me.

Or does Steam do some sort of quicker but weaker validation, like checking that the sizes (byte counts) are correct but not looking at the actual content?

At the moment there is no channel that I'm aware of by which the sniper unpacking machinery can report back to the Steam client "file x is corrupt, please re-download". If Steam checks file sizes, a simple version might be to truncate ubuntu12_64/steam-runtime-sniper.tar.xz to 0 bytes long, to nudge Steam into re-downloading it? Or if there's some IPC mechanism available, like writing into ~/.steam/steam.pipe or communicating through an AF_UNIX socket, we could maybe teach steam-runtime-sniper.sh to be able to do that.

is this a problem with the types of checksums we are doing?

Any checksum would have the same effect: there are two reasonable results, "file is 100% correct" or "error". The only way to recover from corruption is re-downloading, unless we add significant redundancy (unlikely to be worth it in practice).

I believe the xz format has its own internal validation mechanism (which is why xz --test can work) and that will cause steam-runtime-sniper.sh to fail to unpack a corrupted archive most of the time (rather than silently unpacking the wrong things). I'm not sure whether it's a simple checksum like CRC32 (as used in zip files) or a cryptographic hash like SHA256, but either one would be good enough for our purposes.

TTTimo 2025-01-03 github

@btuin we found the likely reasons why the bootstrap logic in steam is not able to detect and correct this. We will work on addressing in a future update, I don't think we need the logs I requested earlier.

If this happens again, running steam with -verifyfiles should fix.

Bbtuin 2025-01-12 github

Thanks! If you need the logs anyway, tell me which one you want.
By the way I'm not sure if this is obvious, but I provided the complete output of the terminal in my first message, is this what you wanted ("Ouput of flatpak run com.valvesoftware.Steam")?

TTTimo 2025-01-15 github

The latest beta will now automatically force a full checksum verification if it is having problems with the expansion of the CEF runtime.

Kkisak-valve maintainer 2025-03-08 github

Closing per the last comment.

Error codes