ValveSoftware / steam-for-linux

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

Steam crashes with an illegal instruction on pre-SSE3 processors #5164

Open zevilz opened 7 years ago

zevilz commented 7 years ago

Steam client falls after authorization. Output from the command line:

Running Steam on ubuntu 16.04 32-bit
STEAM_RUNTIME is enabled automatically
Pins up-to-date!
[2017-09-10 00:00:50] Startup - updater built Sep  6 2017 20:37:15
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[2017-09-10 00:00:51] Checking for update on startup
[2017-09-10 00:00:51] Checking for available updates...
[2017-09-10 00:00:53] Download skipped: /client/steam_client_ubuntu12 version 1504757234, installed version 1504757234
[2017-09-10 00:00:53] Nothing to do
[2017-09-10 00:00:53] Verifying installation...
[2017-09-10 00:00:53] Performing checksum verification of executable files
[2017-09-10 00:01:02] Verification complete

bootstrap_log.txt

And not working with package from Ubuntu 17.10 (1.0.0.54+repack-2ubuntu5). Also not working with same problem on Debain 8 32-bit with last updates (worked earlier fine). Steam client version 1.0.0.49-1.

I'm tried install same OS (Ubuntu Mate 16.04.03 32-bit) with same version of Steam client (1.0.0.48-1ubuntu4) on VirtualBox on other hardware. Working fine.

zevilz commented 7 years ago

console output after downloading update

kisak-valve commented 7 years ago

Hello @zevilz, please add a gist of your ~/.steam/error.log and the corresponding minidump in /tmp/dumps. I suspect steam is trying to run an SSE3 instruction in SDL2, but the processor does not support SSE3.

zevilz commented 7 years ago

~/.steam/error.log

Installing breakpad exception handler for appid(steam)/version(1504757234)
Xlib:  extension "NV-GLX" missing on display ":0".

crash_20170910135500_1.zip

kisak-valve commented 7 years ago

Thanks @zevilz. This is as I suspected, an SSE3 in the steam runtime provided SDL2. You could try to build libSDL2-2.0.5 (or newer) from source or add a symlink to a system variant of the library in ~/.steam/ubuntu12_32/steam-runtime/pinned_libs_32, but there may be unexpected side effects.

zevilz commented 7 years ago

I'm install libSDL2-2.0.5 from Zesty (ubuntu 17.04) repository and add symlink to libSDL2-2.0.so.0 in ~/.steam/ubuntu12_32/steam-runtime/pinned_libs_32. Same problem without errors. Then i'm replace libSDL2-2.0.so.0 in ~/.steam/ubuntu12_32/. But client check his libraries after start steam and restore original files

BVerifyInstalledFiles: ubuntu12_32/libSDL2-2.0.so.0 is 1260452 bytes, expected 1013365

Then i'm replace original file after libraries check. Same problem again.

Nuzgart commented 6 years ago

I see it's been some time since this issue was first noticed... Are there any currently known workarounds?

lisikh commented 5 years ago

Here is my workaround.
You need libSDL 2.0.9 as it contains all necessary calls. For ubuntu 18.04 there is a binary package. For ubuntu 16.04 I compiled source package with gcc 9. The hint is to get smaller library than original steam-shipped. Next, append your library with zeroes to equal original size as steam client only checks file size: dd if=/dev/zero of=libSDL2-2.0_new.so.0 count=1 bs=$(( $original_size - $your_size )) oflag=append conv=notrunc Replace your library to ~/.steam/ubuntu12_32/ Enjoy steam on pre-sse3 processors :)