Difference between revisions of "Steam/Troubleshooting"

From ArchWiki
Jump to navigation Jump to search
(Add a section for games broken on OSS drivers.)
(simplification and beautification of wikilinks (interactive))
Tag: wiki-scripts
 
(121 intermediate revisions by 27 users not shown)
Line 1: Line 1:
 
[[Category:Gaming]]
 
[[Category:Gaming]]
[[ru:Steam/Troubleshooting]]
 
 
[[ja:Steam/トラブルシューティング]]
 
[[ja:Steam/トラブルシューティング]]
{{Related articles start}}
+
== Introduction ==
{{Related|Steam/Game-specific troubleshooting}}
 
{{Related articles end}}
 
  
{{Tip|The Steam launcher redirects its stdout and stderr to {{ic|/tmp/dumps/''USER''_stdout.txt}}. This means you do not have to run Steam from a terminal emulator to see that output.}}
+
# Make sure that you have followed [[Steam#Installation]].
 +
# If the Steam client / a game is not starting and/or you have error message about a library, read [[#Steam runtime]] and see [[#Debugging shared libraries]].
 +
# If the issue is related to networking, make sure that you have forwarded the [https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711 required ports for Steam].
 +
# If the issue is about a game, consult [[Steam/Game-specific troubleshooting]].
  
{{Note| Bugs should be reported at Valve's [https://github.com/ValveSoftware/steam-for-linux GitHub issue tracker].}}
+
=== Relevant online resources ===
  
== Debugging Steam ==
+
* [https://bbs.archlinux.org/viewforum.php?id=32 Multimedia and Games / Arch Linux Forums]
 
+
* [https://github.com/ValveSoftware/steam-for-linux ValveSoftware/steam-for-linux] – Issue tracking for the Steam for Linux client
It is possible to debug Steam to gain more information which could be useful to find out why something does not work.
+
* [https://steamcommunity.com/ Steam Community discussions of the game]
 
+
* [https://help.steampowered.com/en/ Steam Support FAQ]
You can set {{ic|DEBUGGER}} environment variable with one of {{ic|gdb}}, {{ic|cgdb}}, {{ic|valgrind}}, {{ic|callgrind}}, {{ic|strace}} and then start {{ic|steam}}.
 
  
For example with {{Pkg|gdb}}
+
== Steam runtime ==
{{bc|1=$ DEBUGGER=gdb steam}}
 
  
{{ic|gdb}} will open, then type {{ic|run}} which will start {{ic|steam}} and once crash happens you can type {{ic|backtrace}} to see call stack.
+
Steam for Linux ships with its own set of libraries called the [https://github.com/ValveSoftware/steam-runtime Steam runtime]. By default Steam launches all Steam Applications within the runtime environment.
 +
The Steam runtime is located at {{ic|~/.steam/root/ubuntu12_32/steam-runtime/}}.
  
== Steam runtime issues ==
+
If you mix the Steam runtime libraries with system libraries you will run into binary incompatibility issues, see [https://github.com/ValveSoftware/steam-for-linux/issues/4768 steam-for-linux issue #4768].
 +
Binary incompatibility can lead to the Steam client and games not starting (manifesting as a crash, as hanging or silently returning), audio issues and various other problems.
  
Steam installs its own older versions of some libraries collectively called the "Steam Runtime". These will often conflict with the libraries included in Arch Linux, and out-of-date libraries may be missing important features (Notably, the OpenAL version they ship lacks [[Gaming#Binaural_Audio_with_OpenAL|HRTF]] and surround71 support).
+
The {{Pkg|steam}} package offers three ways to launch Steam:
  
Some of the possible symptoms of this issue are the Steam client itself crashing or hanging, and/or various errors:
+
* {{ic|steam-runtime}} (alias {{ic|steam}}), which overrides runtime libraries known to cause problems via the {{ic|LD_PRELOAD}} [[environment variable]] (see {{man|8|ld.so}}).
 +
* {{ic|steam-native}}, see [[#Steam native runtime]]
 +
* {{ic|/usr/lib/steam/steam}}, the default Steam launch script
  
{{bc|
+
As the Steam runtime libraries are older they can lack newer features, e.g. the OpenAL version of the Steam runtime lacks [[Gaming#Binaural_Audio_with_OpenAL|HRTF]] and surround71 support.
libGL error: unable to load driver: ''some_driver_dri''.so
 
libGL error: driver pointer missing
 
libGL error: failed to load driver: ''some_driver''
 
libGL error: unable to load driver: swrast_dri.so
 
libGL error: failed to load driver: swrast}}
 
  
Failed to load libGL: undefined symbol: xcb_send_fd
+
=== Steam native runtime ===
  
OpenGL GLX context is not using direct rendering, which may cause performance problems.
+
{{Warning|Using the Steam native runtime is not recommended as it might break some games due to binary incompatibility and it might miss some libraries present in the Steam runtime.}}
  
Could not find required OpenGL entry point 'glGetError'! Either your video card is unsupported or your OpenGL driver needs to be updated.
+
The {{ic|steam-native}} script launches Steam with the {{ic|1=STEAM_RUNTIME=0}} environment variable making it ignore its runtime and only use system libraries.
  
{{Note|1=A misconfigured [[firewall]] may cause Steam to fail as it can not connect to its servers. [https://support.steampowered.com/kb_article.php?ref=2198-AGHC-7226] Most games will crash if the Steam API fails to load.}}
+
The {{Pkg|steam-native-runtime}} meta package depends on over 120 packages to pose a native replacement of the Steam runtime, some games may however still require additional packages. You can also use the Steam native runtime without {{Pkg|steam-native-runtime}} by manually installing just the packages you need. See [[#Finding missing runtime libraries]].
  
See also [https://github.com/ValveSoftware/steam-for-linux/issues/4768 upstream issue #4768], and these forum threads:
+
== Debugging shared libraries ==
  
* https://bbs.archlinux.org/viewtopic.php?id=181171
+
To see the shared libraries required by a program or a shared library run the {{ic|ldd}} command on it, see {{man|1|ldd}}. The {{ic|LD_LIBRARY_PATH}} and {{ic|LD_PRELOAD}} [[environment variables]] can alter which shared libraries are loaded, see {{man|8|ld.so}}.  
* https://bbs.archlinux.org/viewtopic.php?id=183141
+
To correctly debug a program or shared library it is therefore important that these environment variables in your debug environment match the environment you wish to debug.
  
=== Solutions ===
+
If you figure out a missing library you can use [[pacman]] or [[pkgfile]] to search for packages that contain the missing library.
  
There are three ways to run Steam provided by the {{pkg|steam}} package:
+
=== Finding missing game libraries ===
  
$ steam-runtime
+
If a game fails to start, a possible reason is that it is missing required libraries. You can find out what libraries it requests by running {{ic|ldd ''game_executable''}}. {{ic|''game_executable''}} is likely located somewhere in {{ic|~/.steam/root/steamapps/common/}}. Please note that most of these "missing" libraries are actually already included with Steam, and do not need to be installed globally.
This is the command which is run when you run Steam via {{ic|/usr/bin/steam}} or the "Steam" [[desktop entry]]. Runtime libraries which are known to cause problems are overriden via the {{ic|LD_PRELOAD}} [[environment variable]] (see {{man|8|ld.so}}). If your system still has library conflicts with this command, you can make a copy of {{ic|/usr/bin/steam-runtime}} and edit it to add additional workarounds.
 
 
 
$ steam-native
 
This is the command run by the "Steam (Native)" [[desktop entry]]. This version forces Steam to ignore its runtime and only use system libraries. You will probably need to install {{pkg|steam-native-runtime}} in order for Steam to run at all, though some games may require additional packages. See [[#Finding missing runtime libraries]] and [[Steam/Game-specific troubleshooting]].
 
 
 
$ /usr/lib/steam/steam
 
This is the normal Steam launcher without any Arch-specific workarounds.
 
  
 
=== Finding missing runtime libraries ===
 
=== Finding missing runtime libraries ===
Line 64: Line 54:
 
If individual games or Steam itself is failing to launch when using {{ic|steam-native}} you are probably missing libraries. To find the required libraries run:
 
If individual games or Steam itself is failing to launch when using {{ic|steam-native}} you are probably missing libraries. To find the required libraries run:
  
  $ cd ~/.local/share/Steam/ubuntu12_32
+
  $ cd ~/.steam/root/ubuntu12_32
 
  $ file * | grep ELF | cut -d: -f1 | LD_LIBRARY_PATH=. xargs ldd | grep 'not found' | sort | uniq
 
  $ file * | grep ELF | cut -d: -f1 | LD_LIBRARY_PATH=. xargs ldd | grep 'not found' | sort | uniq
  
Alternatively, run Steam with its runtime ({{ic|/usr/bin/steam}}) and use the following command to see which non-system libraries Steam is using (not all of these are part of the Steam runtime):
+
Alternatively, run Steam with {{ic|steam-runtime}} and use the following command to see which non-system libraries Steam is using (not all of these are part of the Steam runtime):
 
   
 
   
 
  $ for i in $(pgrep steam); do sed '/\.local/!d;s/.*  //g' /proc/$i/maps; done | sort | uniq
 
  $ for i in $(pgrep steam); do sed '/\.local/!d;s/.*  //g' /proc/$i/maps; done | sort | uniq
  
If the above commands have no output and you have an NVIDIA video card, then you may need to explitly install {{pkg|lib32-nvidia-utils}}.
+
== Debugging Steam ==
  
== Other runtime issues ==
+
The Steam launcher redirects its stdout and stderr to {{ic|/tmp/dumps/''USER''_stdout.txt}}.
 +
This means you do not have to run Steam from the command-line to see that output.
  
=== Native runtime: steam.sh line 756 Segmentation fault ===
+
It is possible to debug Steam to gain more information which could be useful to find out why something does not work.
  
: Valve GitHub [https://github.com/ValveSoftware/steam-for-linux/issues/3863 issue 3863]
+
You can set {{ic|DEBUGGER}} environment variable with one of {{ic|gdb}}, {{ic|cgdb}}, {{ic|valgrind}}, {{ic|callgrind}}, {{ic|strace}} and then start {{ic|steam}}.
 +
 
 +
For example with {{Pkg|gdb}}
 +
{{bc|1=$ DEBUGGER=gdb steam}}
  
As per the bug report above, Steam crashes with {{ic|/home/<username>/.local/share/Steam/steam.sh: line 756: <variable numeric code> Segmentation fault (core dumped)}} when running with STEAM_RUNTIME=0.
+
{{ic|gdb}} will open, then type {{ic|run}} which will start {{ic|steam}} and once crash happens you can type {{ic|backtrace}} to see call stack.
  
This happens because steamclient.so is linked to libudev.so.0 ({{AUR|lib32-libudev0}}) which conflicts with libudev.so.1 ({{Pkg|lib32-systemd}})
+
== Runtime issues ==
  
The only proposed workaround is copying Steam's packaged 32-bit versions of libusb and libgudev to /usr/lib32:
+
=== Segmentation fault when disabling runtime  ===
  
{{bc|# cp $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libgudev* /usr/lib32
+
:[https://github.com/ValveSoftware/steam-for-linux/issues/3863 steam-for-linux issue #3863]
# cp $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libusb* /usr/lib32}}
 
  
Notice that the workaround is necessary because the bug affects systems with lib32-libgudev and lib32-libusb installed.
+
As per the bug report above, Steam crashes with the following error message when run with {{ic|1=STEAM_RUNTIME=0}}:
  
Alternatively it has been successful to prioritize the loading of the libudev.so.1 (see [https://github.com/ValveSoftware/steam-for-linux/issues/3863#issuecomment-203929113 comment on the same issue]):
+
/home/''USER''/.local/share/Steam/steam.sh: line 756: <variable numeric code> Segmentation fault (core dumped)
{{bc|1=$ LD_PRELOAD=/usr/lib32/libudev.so.1 STEAM_RUNTIME=0 steam}}
 
  
=== OpenGL not using direct rendering / Steam crashes Xorg ===
+
This happens because {{ic|steamclient.so}} is linked to {{ic|libudev.so.0}} ({{AUR|lib32-libudev0}}) which conflicts with {{ic|libudev.so.1}} ({{Pkg|lib32-systemd}}).
  
Sometimes presented with the error message "OpenGL GLX context is not using direct rendering, which may cause performance problems." [https://support.steampowered.com/kb_article.php?ref=9938-EYZB-7457]
+
A proposed workaround is to copy Steam's packaged 32-bit versions of libusb and libgudev to {{ic|/usr/lib32}}:
  
If you still encounter this problem after addressing [[#Steam runtime issues]], you have probably not installed your 32-bit graphics driver correctly. See [[Xorg#Driver installation]] for which packages to install.
+
# cp ~/.steam/root/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libgudev* /usr/lib32
 +
# cp ~/.steam/root/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libusb* /usr/lib32
  
You can check/test if it is installed correctly by installing {{Pkg|lib32-mesa-demos}} and running the following command:
+
Notice that the workaround is necessary because the bug affects systems with lib32-libgudev and lib32-libusb installed.
  
$ glxinfo32 | grep OpenGL.
+
Alternatively it has been successful to prioritize the loading of the libudev.so.1 (see [https://github.com/ValveSoftware/steam-for-linux/issues/3863#issuecomment-203929113 comment on the same issue]):
 +
{{bc|1=$ LD_PRELOAD=/usr/lib32/libudev.so.1 STEAM_RUNTIME=0 steam}}
  
 
=== 'GLBCXX_3.X.XX' not found when using Bumblebee ===
 
=== 'GLBCXX_3.X.XX' not found when using Bumblebee ===
  
This error is likely caused because Steam packages its own out of date {{ic|libstdc++.so.6}}. See [[#Steam runtime issues]] about working around the bad library. See also GitHub [https://github.com/ValveSoftware/steam-for-linux/issues/3773 issue 3773].
+
This error is likely caused because Steam packages its own out of date {{ic|libstdc++.so.6}}. See [[#Finding missing runtime libraries]] about working around the bad library. See also [https://github.com/ValveSoftware/steam-for-linux/issues/3773 steam-for-linux issue 3773].
  
=== Games crash immediately ===
+
=== Game crashes immediately ===
  
This is likely due to [[#Steam runtime issues]]. If those solutions do not work, try setting the following [[Steam#Launch options|launch options]]:
+
This is likely due to [[#Steam runtime]] issues, see [[#Debugging shared libraries]].
  
{{bc|1=LD_PRELOAD='./libcxxrt.so:/usr/$LIB/libstdc++.so.6' %command%}}
+
Disabling the in-game Steam Overlay in the game properties might help.
 
 
If it does not help try disabling: ''Enable the Steam Overlay while in-game'' in the game properties.
 
  
 
And finally, if those don't work, you should check Steam's output for any error from the game. You may encounter the following:
 
And finally, if those don't work, you should check Steam's output for any error from the game. You may encounter the following:
* munmap_chunk(): invalid pointer
+
* {{ic|munmap_chunk(): invalid pointer}}
* free(): invalid pointer
+
* {{ic|free(): invalid pointer}}
  
In these cases, try replacing the libsteam_api.so file from the problematic game with one of a game that works. This error usually happens for games that were not updated recently when Steam runtime is disabled. This error has been encountered with AYIM, Bastion and Monaco.
+
In these cases, try replacing the {{ic|libsteam_api.so}} file from the problematic game with one of a game that works. This error usually happens for games that were not updated recently when Steam runtime is disabled. This error has been encountered with AYIM, Bastion and Monaco.
  
 
=== Version `CURL_OPENSSL_3` not found ===
 
=== Version `CURL_OPENSSL_3` not found ===
Line 127: Line 119:
 
One of the following messages may show up:
 
One of the following messages may show up:
  
{{bc|# Nuclear Throne
+
# Nuclear Throne
./nuclearthrone: /usr/lib32/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./nuclearthrone)
+
./nuclearthrone: /usr/lib32/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./nuclearthrone)
 +
 +
# Devil Daggers
 +
./devildaggers: /usr/lib/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./devildaggers)
 +
 
 +
You need to install either {{Pkg|libcurl-compat}} or {{Pkg|lib32-libcurl-compat}} and link the compatibility library manually:
 +
 
 +
# Nuclear Throne
 +
$ ln -s /usr/lib32/libcurl-compat.so.4.4.0 "''LIBRARY''/steamapps/common/Nuclear Throne/lib/libcurl.so.4"
 +
 +
# Devil Daggers
 +
$ ln -s /usr/lib/libcurl-compat.so.4.4.0 ''LIBRARY''/steamapps/common/devildaggers/lib64/libcurl.so.4
 +
 
 +
=== Steam webview/game browser not working in native runtime (Black screen) ===
 +
Since the new Steam Friends UI update, the client webview isn't working correctly with the native-runtime.
 +
 +
./steamwebhelper: error while loading shared libraries: libpcre.so.3: cannot open shared object file: No such file or directory
 +
It can be solved preloading glib libraries; Those don't require libpcre and selinux to work.
 +
 +
$ LD_PRELOAD="/usr/lib/libgio-2.0.so.0 /usr/lib/libglib-2.0.so.0" steam-native
  
# Devil Daggers
+
Alternatively, you may create a symbolic link to the native Arch libpcre library.
./devildaggers: /usr/lib/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./devildaggers)}}
 
  
You need to install either {{Pkg|libcurl-compat}} or {{Pkg|lib32-libcurl-compat}} and link the compatibility library manually:
+
# ln -s /usr/lib/libpcre.so /usr/lib64/libpcre.so.3
  
{{bc|# Nuclear Throne
+
=== Steam: An X Error occurred ===
$ ln -s /usr/lib32/libcurl-compat.so.4.4.0 $HOME/.steam/steam/steamapps/common/Nuclear Throne/lib/libcurl.so.4
+
When using an NVidia GPU and proprietary drivers, Steam may fail to start and (if run from the terminal) produce errors of the form:
 +
 +
Steam: An X Error occurred
 +
X Error of failed request:  GLXBadContext
 +
Major opcode of failed request:  151
 +
Serial number of failed request:  51
 +
xerror_handler: X failed, continuing
  
# Devil Daggers
+
Install the package {{Pkg|lib32-nvidia-utils}} (or {{Pkg|lib32-nvidia-390xx-utils}} if using an old GPU).
$ ln -s /usr/lib/libcurl-compat.so.4.4.0 $HOME/.steam/steam/steamapps/common/devildaggers/lib64/libcurl.so.4}}
 
  
 
== Audio issues ==
 
== Audio issues ==
  
Check [[Steam/Game-specific troubleshooting]] for issues with specific games. If the sections below do not address the issue, try running Steam with the native runtime (see [[#Solutions]]).
+
If the sections below do not address the issue, using the [[#Steam native runtime]] might help.
  
 
=== Configure PulseAudio ===
 
=== Configure PulseAudio ===
Line 151: Line 166:
 
=== No audio or 756 Segmentation fault ===
 
=== No audio or 756 Segmentation fault ===
  
First [[#Configure PulseAudio]] and see if that resolves the issue. If you do not have audio in the videos which play within the Steam client, it is possible that the ALSA libs packaged with Steam are not working.
+
First [[#Configure PulseAudio]] and see if that resolves the issue. If you do not have audio in the videos which play within the Steam client, it is possible that the ALSA libraries packaged with Steam are not working.
  
 
Attempting to playback a video within the steam client results in an error similar to:
 
Attempting to playback a video within the steam client results in an error similar to:
Line 161: Line 176:
 
  ~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/
 
  ~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/
  
An alternative workaround is to add the {{ic|libasound.so.*}} library to the '''LD_PRELOAD''' environment variable:
+
An alternative workaround is to add the {{ic|libasound.so.*}} library to the {{ic|LD_PRELOAD}} environment variable:
  
 
  LD_PRELOAD='/usr/$LIB/libasound.so.2 '${LD_PRELOAD} steam
 
  LD_PRELOAD='/usr/$LIB/libasound.so.2 '${LD_PRELOAD} steam
  
If audio still won't work, adding the Pulseaudio-libs to the '''LD_PRELOAD''' variable may help:
+
If audio still won't work, adding the Pulseaudio-libs to the {{ic|LD_PRELOAD}} variable may help:
 
   
 
   
 
  LD_PRELOAD='/usr/$LIB/libpulse.so.0 /usr/$LIB/libpulse-simple.so.0 '${LD_PRELOAD}
 
  LD_PRELOAD='/usr/$LIB/libpulse.so.0 /usr/$LIB/libpulse-simple.so.0 '${LD_PRELOAD}
  
Be adviced that their names may change over time. If so, it is necessary to take a look in  
+
Be advised that their names may change over time. If so, it is necessary to take a look in  
  
 
  ~/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
 
  ~/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
  
and find the new libs and their versions.
+
and find the new libraries and their versions.
  
 
Bugs reports have been filed: [https://github.com/ValveSoftware/steam-for-linux/issues/3376 #3376] and [https://github.com/ValveSoftware/steam-for-linux/issues/3504 #3504]
 
Bugs reports have been filed: [https://github.com/ValveSoftware/steam-for-linux/issues/3376 #3376] and [https://github.com/ValveSoftware/steam-for-linux/issues/3504 #3504]
  
 
=== FMOD sound engine ===
 
=== FMOD sound engine ===
 +
{{Accuracy|No source / bug report.}}
  
While troubleshooting a sound issue, it became evident that the following games (as examples) use the 'FMOD' audio middleware package:
+
The [https://www.fmod.com/ FMOD] audio middleware package is a bit buggy, and as a result games using it may have sound problems.
   
 
* Hotline Miami
 
* Hotline Miami 2
 
* Transistor
 
  
This package is a bit buggy, and as a result while sound can appear to be working fine for the rest of your system, some games may still have problems.
+
It usually occurs when an unused sound device is used as default for ALSA. See [[Advanced Linux Sound Architecture#Set the default sound card]].
  
It usually occurs when an unused sound device is used as default for ALSA. See [[Advanced Linux Sound Architecture#Set the default sound card]].
+
:Affected games: Hotline Miami, Hotline Miami 2, Transistor
  
=== Audio streams can't be moved between devices ===
+
=== PulseAudio & OpenAL: Audio streams can't be moved between devices ===
If you use {{Pkg|pulseaudio}} and attempt to move an audio stream between different sinks, there's a possibility that you won't be able to move the stream.
 
  
This is because recent versions of OpenAL default to disallow pulse streams from being moved. To remedy this fact, create a ~/.alsoftrc with the contents
+
If you use [[PulseAudio]] and cannot move an audio stream between sinks, it might be because recent OpenAL versions default to disallow audio streams from being moved. Try to add the following to your {{ic|~/.alsoftrc}}:
  
 
  [pulse]
 
  [pulse]
 
  allow-moves=true
 
  allow-moves=true
  
== In-home streaming issues ==
+
== Steam client issues ==
 +
 
 +
=== Cannot add library folder because of missing execute permissions ===
 +
 
 +
If you add another Steam library folder on another drive, you might get the error message:
 +
 
 +
New Steam library folder must be on a filesystem mounted with execute permissions
 +
 
 +
Make sure you are mounting the filesystem with the correct flags in your {{ic|/etc/fstab}}, usually by adding {{ic|exec}} to the list of mount parameter. The parameter must occur after any {{ic|user}} or {{ic|users}} parameter since these can imply {{ic|noexec}}.
 +
 
 +
This error might also occur if your library folder does not contain a {{ic|steamapps}} directory. Previous versions used {{ic|SteamApps}} instead, so ensure the name is fully lowercase.
 +
 
 +
This error can also occur because of Steam runtime issues and may be fixed following the [[#Finding missing runtime libraries]] section or due to no space being left on the device. For debugging purposes it might be useful to run Steam from the console and observe the log.
 +
 
 +
=== Unusually slow download speed ===
 +
 
 +
If your Steam apps (games, software…) download speed through the client is unusually slow, but browsing the Steam store and streaming videos is unaffected, installing a DNS cache program, such as [[dnsmasq]] can help [https://steamcommunity.com/app/221410/discussions/2/616189106498372437/].
 +
 
 +
Something else that might help would be disabling [[IPv6]][https://github.com/ValveSoftware/steam-for-linux/issues/6126].
 +
 
 +
=== "Needs to be online" error ===
 +
If the Steam launcher refuses to start and you get an error saying: "''Fatal Error: Steam needs to be online to update''" while you are online, then there might be issues with name resolving. 
 +
 
 +
Try to install {{Pkg|nss-mdns}} or {{Pkg|lib32-nss}}.
 +
 
 +
=== Steam forgets password ===
 +
 
 +
:Related: [https://github.com/ValveSoftware/steam-for-linux/issues/5030 steam-for-linux#5030]
 +
Steam for Linux has a bug which causes it to forget the password of some users.
 +
 
 +
As a workaround, after logging in to Steam, run
 +
$ chmod -w ~/.steam/registry.vdf
 +
This will make the file read-only so Steam cannot modify it, and thus not log you out.
  
=== In Home Streaming does not work from archlinux host to archlinux guest ===
+
=== Preventing crash memory dumps ===
 +
 
 +
Every time Steam crashes, it writes a memory dump to {{ic|/tmp/dumps/}}. If Steam falls into a crash loop, the dump files can become quite large. When {{ic|/tmp}} is mounted as [[tmpfs]], memory and swap file can be consumed needlessly.
 +
 
 +
To prevent this, link {{ic|/tmp/dumps/}} to {{ic|/dev/null}}:
 +
# ln -s /dev/null /tmp/dumps
 +
 
 +
Or alternatively, create and modify permissions on {{ic|/tmp/dumps}}. Then Steam will be unable to write dump files to the directory.
 +
 
 +
# mkdir /tmp/dumps
 +
# chmod 600 /tmp/dumps
 +
 
 +
This also has the added benefit of Steam not uploading these dumps to Valve's servers.
 +
 
 +
=== Steam license problem with playing videos ===
 +
 
 +
Steam uses [[w:Widevine|Google's Widevine DRM]] for some videos. If it is not installed you will get the following error:
 +
 
 +
This video requires a license to play which cannot be retrieved. This may be a temporary network condition. Please restart the video to try again.
 +
 
 +
To solve this issue follow the [https://support.steampowered.com/kb_article.php?ref=8699-OASD-1871#15 ''Streaming Videos on Steam'' support page].
 +
 
 +
=== No context menu for joining/inviting friends ===
 +
 
 +
Since the new Steam Friends UI update, it may be the case that in the right-click menu the entries for "Join Game", "Invite to Game" and "View Game  Info" are missing.
 +
 
 +
In order to fix this, it maybe be necessary to install {{Pkg|lsof}}.
 +
 
 +
=== Slow and unresponsive user interface ===
 +
 
 +
If you experience extremely slow and sluggish performance when using the Steam client it might help to disable the option "Enable GPU accelerated rendering in web views" under the "Interface" tab in the Steam client settings.
 +
 
 +
== Steam Remote Play issues ==
 +
 
 +
See [[Steam#Steam Remote Play]].
 +
 
 +
=== Remote Play does not work from Arch Linux host to Arch Linux guest ===
  
 
Chances are you are missing {{Pkg|lib32-libcanberra}}. Once you [[install]] that, it should work as expected.
 
Chances are you are missing {{Pkg|lib32-libcanberra}}. Once you [[install]] that, it should work as expected.
  
With that, steam should no longer crash when trying to launch a game through in home streaming.
+
With that, Steam should no longer crash when trying to launch a game through Remote Play.
  
 
=== Hardware decoding not available ===
 
=== Hardware decoding not available ===
  
In-home streaming hardware decoding uses {{ic|vaapi}}, so it needs to be installed (or wrapped around {{ic|vdpau}}). See [[hardware video acceleration]]. Remember to install the {{ic|lib32}} versions as well.
+
Remote Play hardware decoding uses {{ic|vaapi}}, but steam requires {{ic|libva2_32bit}}, where as Arch defaults to 64bit.
 +
 
 +
As a basic set, this is {{Pkg|libva}} and {{Pkg|lib32-libva}}. Intel graphics users will also require both {{Pkg|libva-intel-driver}} and {{Pkg|lib32-libva-intel-driver}}.
 +
 
 +
For more information about vaapi see [[hardware video acceleration]].
 +
 
 +
It may also be necessary to remove the steam runtime version of libva, in order to force it to use system libraries. The current library in use can be found by using:
 +
 
 +
pgrep steam | xargs -I {} cat /proc/{}/maps | grep libva
 +
 
 +
If this shows locations in {{ic|~/.local/Share/steam}} steam is still using it's packaged version of libva. This can be rectified by deleting the libva library files at {{ic|~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libva*}}, so that steam falls back to the system libraries.
  
=== BPM minimizes itself after losing focus ===
+
=== Big Picture Mode minimizes itself after losing focus ===
  
This can occur when you play a game via in-home streaming or if you have a multi-monitor setup and move the mouse outside of BPM's window. To prevent this, set the following environment variable and restart Steam
+
This can occur when you play a game via Remote Play or if you have a multi-monitor setup and move the mouse outside of BPM's window. To prevent this, set the following environment variable and restart Steam
  
 
  export SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0
 
  export SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0
  
See also the [https://github.com/ValveSoftware/steam-for-linux/issues/4769 github issue].
+
See also the [https://github.com/ValveSoftware/steam-for-linux/issues/4769 steam-for-linux issue 4769].
 +
 
 +
== Other issues ==
  
== Wrong ELF class ==
+
=== Wrong ELF class ===
  
 
If you see this message in Steam's console output
 
If you see this message in Steam's console output
Line 225: Line 316:
 
you can safely ignore it. It is not really any error: Steam includes both 64- and 32-bit versions of some libraries and only one version will load successfully. This "error" is displayed even when Steam (and the in-game overlay) is working perfectly.
 
you can safely ignore it. It is not really any error: Steam includes both 64- and 32-bit versions of some libraries and only one version will load successfully. This "error" is displayed even when Steam (and the in-game overlay) is working perfectly.
  
== Multiple monitors setup ==
+
=== Multiple monitors setup ===
{{Expansion|Is this nvidia-only? Can this be reproduced by anyone? Is there an upstream report?}}
+
{{Expansion|Is this Nvidia-only? Can this be reproduced by anyone? Is there an upstream report?}}
 
A setup with multiple monitors may prevent games from starting. Try to disable all additional displays, and then run a game. You can enable them after the game successfully started.  
 
A setup with multiple monitors may prevent games from starting. Try to disable all additional displays, and then run a game. You can enable them after the game successfully started.  
  
Line 233: Line 324:
 
  export LD_LIBRARY_PATH=/usr/lib32/nvidia:/usr/lib/nvidia:$LD_LIBRARY_PATH
 
  export LD_LIBRARY_PATH=/usr/lib32/nvidia:/usr/lib/nvidia:$LD_LIBRARY_PATH
  
== Text is corrupt or missing ==
+
=== Text is corrupt or missing ===
  
 
The Steam Support [https://support.steampowered.com/kb_article.php?ref=1974-YFKL-4947 instructions] for Windows seem to work on Linux also.
 
The Steam Support [https://support.steampowered.com/kb_article.php?ref=1974-YFKL-4947 instructions] for Windows seem to work on Linux also.
Line 243: Line 334:
 
The font being used in place of Arial can be found with the command {{bc|$ fc-match -v Arial}}}}
 
The font being used in place of Arial can be found with the command {{bc|$ fc-match -v Arial}}}}
  
Specific games may have other font requirement. See [[Steam/Game-specific troubleshooting]].
+
=== SetLocale('en_US.UTF-8') fails at game startup or typing non-ASCII characters does not work in the Steam client ===
 
 
== SetLocale('en_US.UTF-8') fails at game startup ==
 
  
 
You need to generate the {{ic|en_US.UTF-8 UTF-8}} locale. See [[Locale#Generating locales]].
 
You need to generate the {{ic|en_US.UTF-8 UTF-8}} locale. See [[Locale#Generating locales]].
  
== Missing libc ==
+
=== Missing libc ===
  
 
This could be due to a corrupt Steam executable. Check the output of:
 
This could be due to a corrupt Steam executable. Check the output of:
Line 260: Line 349:
 
  $ ./steam.sh --reset
 
  $ ./steam.sh --reset
  
If it doesn't, try to delete the {{ic|~/.local/share/Steam/}} directory and launch steam again, telling it to reinstall itself.
+
If it doesn't, try to delete the {{ic|~/.local/share/Steam/}} directory and launch Steam again, telling it to reinstall itself.
  
This error message can also occur due to a bug in steam which occurs when your {{ic|$HOME}} directory ends in a slash (Valve GitHub [https://github.com/ValveSoftware/steam-for-linux/issues/3730 issue 3730]). This can be fixed by editing {{ic|/etc/passwd}} and changing {{ic|/home/<username>/}} to {{ic|home/<username>}}, then logging out and in again. Afterwards, steam should repair itself automatically.
+
This error message can also occur due to a bug in Steam which occurs when your {{ic|$HOME}} directory ends in a slash (Valve GitHub [https://github.com/ValveSoftware/steam-for-linux/issues/3730 issue 3730]). This can be fixed by editing {{ic|/etc/passwd}} and changing {{ic|/home/<username>/}} to {{ic|home/<username>}}, then logging out and in again. Afterwards, Steam should repair itself automatically.
  
== Missing libGL ==
+
=== Games do not launch on older Intel hardware ===
  
You may encounter this error when you launch Steam at first time.
+
:[https://steamcommunity.com/app/8930/discussions/1/540744299927655197/ source]
  
You are missing the following 32-bit libraries, and Steam may not run: libGL.so.1
+
On older Intel hardware which doesn't support OpenGL 3, such as Intel GMA chips or Westmere CPUs, games may immediately crash when run. It appears as a {{ic|gameoverlayrenderer.so}} error in {{ic|/tmp/dumps/mobile_stdout.txt}}, but looking in {{ic|/tmp/gameoverlayrenderer.log}} it shows a GLXBadFBConfig error.  
  
Make sure you have installed the {{ic|lib32}} version of all your video drivers as described in [[Xorg#Driver installation]].
+
This can be fixed, by forcing the game to use a later version of OpenGL than it wants.
 +
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=3.1 MESA_GLSL_VERSION_OVERRIDE=140}} to your [[launch option]]s.
  
== Missing vgui2_s.so ==
+
=== Mesa: Game does not launch, complaining about OpenGL version supported by the card ===
Error on startup:
 
Could not load module 'vgui2_s.so'.
 
For more information visit https://support.steampowered.com/kb_article.php?ref=9205-OZVN-0660
 
Solution: install package {{ic|lib32-openal}}
 
 
 
== Games do not launch on older Intel hardware ==
 
 
 
On older Intel hardware which doesn't support OpenGL 3, such as Intel GMA chips or Westmere CPUs, games may immediately crash when run. It appears as a gameoverlayrenderer.so error in /tmp/dumps/mobile_stdout.txt, but looking in /tmp/gameoverlayrenderer.log it shows a GLXBadFBConfig error.
 
 
 
This can be fixed, however, by forcing the game to use a later version of OpenGL than it wants. Right click on the game, select Properties. Then, click "Set Launch Options" in the "General" tab and paste the following:
 
 
 
MESA_GL_VERSION_OVERRIDE=3.1 MESA_GLSL_VERSION_OVERRIDE=140 %command%
 
 
 
== Games do not launch on open source drivers, complaining about OpenGL version that the card actually supports ==
 
 
 
Some games are badly programmed, to use any OpenGL version above 3.0 with mesa, an application has to request a specific core profile.
 
  
 +
Some games are badly programmed, to use any OpenGL version above 3.0.
 +
With Mesa, an application has to request a specific core profile.
 
If it doesn't make such a request, only OpenGL 3.0 and lower are available.
 
If it doesn't make such a request, only OpenGL 3.0 and lower are available.
  
This can be fixed, by forcing the game to use a version of OpenGL it actually needs. Right click on the game, select Properties. Then, click "Set Launch Options" in the "General" tab and paste the following(edit as needed):
+
This can be fixed, by forcing the game to use a version of OpenGL it actually needs.
 +
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.1 MESA_GLSL_VERSION_OVERRIDE=410}} to your [[launch option]]s.
  
MESA_GL_VERSION_OVERRIDE=4.1 MESA_GLSL_VERSION_OVERRIDE=410 %command%
+
=== 2K games do not run on XFS partitions ===
 
 
 
 
== 2K games do not run on XFS partitions ==
 
  
 
{{Expansion|Seems to be a general issue, e.g. [https://github.com/ValveSoftware/Source-1-Games/issues/1685]}}
 
{{Expansion|Seems to be a general issue, e.g. [https://github.com/ValveSoftware/Source-1-Games/issues/1685]}}
Line 304: Line 378:
 
[https://bbs.archlinux.org/viewtopic.php?id=185222]
 
[https://bbs.archlinux.org/viewtopic.php?id=185222]
  
== Unable to add library folder because of missing execute permissions ==
+
=== Steam controller not being detected correctly ===
  
If you add another steam library folder on another drive, you might receive the error message ''"New Steam library folder must be on a filesystem mounted with execute permissions"''.
+
See [[Gamepad#Steam Controller]].
 
 
Make sure you are mounting the filesystem with the correct flags in your {{ic|/etc/fstab}}, usually by adding {{ic|exec}} to the list of mount parameter. The parameter must occur after any {{ic|user}} or {{ic|users}} parameter since these can imply {{ic|noexec}}.
 
 
 
This error might also occur if you are readding a library folder and Steam is unable to find a contained {{ic|steamapps}} folder. Previous versions used {{ic|SteamApps}} instead, so ensure the name is fully lowercase.
 
 
 
This error can also occur because of steam runtime issues and may be fixed following the [[#Dynamic linker]]{{Broken section link}} section.
 
  
== Steam controller not being detected correctly ==
+
=== Steam controller makes a game crash ===
  
See [[Gamepad#Steam Controller]].
+
See [[Gamepad#Steam Controller makes a game crash or not recognized]].
  
== Steam hangs on "Installing breakpad exception handler..." ==
+
=== Steam hangs on "Installing breakpad exception handler..." ===
  
 
[https://bbs.archlinux.org/viewtopic.php?id=177245 BBS#177245]
 
[https://bbs.archlinux.org/viewtopic.php?id=177245 BBS#177245]
  
You have an NVIDIA GPU and Steam has the following output:
+
You have an Nvidia GPU and Steam has the following output:
  
 
  Running Steam on arch rolling 64-bit
 
  Running Steam on arch rolling 64-bit
Line 328: Line 396:
 
  Installing breakpad exception handler for appid(steam)/version(0_client)
 
  Installing breakpad exception handler for appid(steam)/version(0_client)
  
Then nothing else happens. Ensure you have the correct drivers installed as well as their 32-bit versions: see [[NVIDIA#Installation]].
+
Then nothing else happens. Ensure you have the correct drivers installed as well as their 32-bit versions (the 64-bit and 32-bit variants have to have the same versions): see [[NVIDIA#Installation]].
  
== Prevent memory dumps from consuming RAM ==
+
=== Killing standalone compositors when launching games ===
  
Every time Steam crashes, it writes a memory dump to {{ic|/tmp/dumps/}}. If Steam falls into a crash loop, the dump files can become quite large. When {{ic|/tmp}} is mounted as [[tmpfs]], memory and swap file can be consumed needlessly.
+
Further to this, utilising the {{ic|%command%}} switch, you can kill standalone compositors (such as Xcompmgr or [[Compton]]) - which can cause lag and tearing in some games on some systems - and relaunch them after the game ends by adding the following to your game's launch options.
  
To prevent this, link {{ic|/tmp/dumps/}} to {{ic|/dev/null}}:
+
  killall compton && %command%; compton -b &
# ln -s /dev/null /tmp/dumps
 
  
Or alternatively, create and modify permissions on {{ic|/tmp/dumps}}. Then Steam will be unable to write dump files to the directory.
+
Replace {{ic|compton}} in the above command with whatever your compositor is. You can also add -options to {{ic|%command%}} or {{ic|compton}}, of course.
  
# mkdir /tmp/dumps
+
Steam will latch on to any processes launched after {{ic|%command%}} and your Steam status will show as in game. So in this example, we run the compositor through {{ic|nohup}} so it is not attached to Steam (it will keep running if you close Steam) and follow it with an ampersand so that the line of commands ends, clearing your Steam status.
# chmod 600 /tmp/dumps
 
  
This also has the added benefit of Steam not uploading these dumps to Valve's servers.
+
=== Symbol lookup error using DRI3  ===
  
== Killing standalone compositors when launching games ==
+
Steam outputs this error and exits.
  
Further to this, utilising the {{ic|%command%}} switch, you can kill standalone compositors (such as Xcompmgr or [[Compton]]) - which can cause lag and tearing in some games on some systems - and relaunch them after the game ends by adding the following to your game's launch options.
+
  symbol lookup error: /usr/lib/libxcb-dri3.so.0: undefined symbol: xcb_send_request_with_fds
 
 
  killall compton && %command%; compton -b &
 
  
Replace {{ic|compton}} in the above command with whatever your compositor is. You can also add -options to {{ic|%command%}} or {{ic|compton}}, of course.
+
To work around this, run Steam with {{ic|1=LIBGL_DRI3_DISABLE=1}}, disabling DRI3 for Steam.
  
Steam will latch on to any processes launched after {{ic|%command%}} and your Steam status will show as in game. So in this example, we run the compositor through {{ic|nohup}} so it is not attached to Steam (it will keep running if you close Steam) and follow it with an ampersand so that the line of commands ends, clearing your Steam status.
+
=== Launching games on Nvidia optimus laptops ===
  
 +
To be able to play games which require using Nvidia GPU (for example, Hitman 2016) on optimus enabled laptop, you should start game with ''primusrun'' prefix in launch options. Otherwise, game will not work.
  
== Very slow app download speed ==
+
Find the game in steam library, right click -> Properties -> SET LAUNCH OPTIONS. Change options to
  
If your Steam apps (games, software…) download speed through the client is unusually slow, but browsing the Steam store and streaming videos is unaffected, installing a DNS cache program, such as [[dnsmasq]] can help [https://steamcommunity.com/app/221410/discussions/2/616189106498372437/].
+
{{ic|1=primusrun %command%}}
  
== Symbol lookup error using dri3  ==
+
Running steam with primusrum used to work. While steam has changed some behavior that now running steam with primusrun would not have effect on launching games. As a result, you need to set launch options for each game (and you do NOT have to run steam with primusrun).
  
Steam outputs this error and exits.
+
For primusrun, VSYNC is enabled by default it could result in a mouse input delay lag, slightly decrease performance and in-game FPS might be locked to a refresh rate of a monitor/display.
 
+
In order to disable VSYNC for primusrun default value of option vblank_mode needs to be overridden by environment variable.
  symbol lookup error: /usr/lib/libxcb-dri3.so.0: undefined symbol: xcb_send_request_with_fds
 
  
For steam to work, disable dri3 in xorg config file or as a workaround run steam with {{ic|1=LIBGL_DRI3_DISABLE=1}}
+
{{ic|1=vblank_mode=0 primusrun %command%}}
  
  LIBGL_DRI3_DISABLE=1 steam
+
Same with optirun that uses primus as a bridge.
  
== Launching games on nvidia optimus laptops ==
+
{{ic|1=vblank_mode=0 optirun -b primus %command%}}
  
To be able to play games which require using nvidia GPU (for example, Hitman 2016) on optimus enabled laptop, you should start steam with ''primusrun'' prefix. Otherwise, game will not work.
+
If that did not work try:
Keep in mind, that issuing some command such as {{ic|primusrun steam}} while steam is already running will not restart it. You should explicitly exit and then start steam via {{ic|primusrun steam}} command or start game immediately after start, for example with {{ic|primusrun steam steam://rungameid/236870}}.
 
After steam was launched with primusrun prefix, you do not need to prefix your game with primusrun or optirun, because it does not matter.
 
  
== "Needs to be online" error ==
+
{{ic|1=LD_PRELOAD="libpthread.so.0 libGL.so.1" __GL_THREADED_OPTIMIZATIONS=1 optirun %command%}}
If the Steam launcher refuses to start and you get an error saying: "Fatal Error: Steam needs to be online to update" while you **are** online, then there might be issues with name resolving. 
 
  
Try to install {{Pkg|nss-mdns}}.
+
For more details see [[Bumblebee#Primusrun mouse delay (disable VSYNC)]].

Latest revision as of 23:36, 8 December 2019

Contents

Introduction

  1. Make sure that you have followed Steam#Installation.
  2. If the Steam client / a game is not starting and/or you have error message about a library, read #Steam runtime and see #Debugging shared libraries.
  3. If the issue is related to networking, make sure that you have forwarded the required ports for Steam.
  4. If the issue is about a game, consult Steam/Game-specific troubleshooting.

Relevant online resources

Steam runtime

Steam for Linux ships with its own set of libraries called the Steam runtime. By default Steam launches all Steam Applications within the runtime environment. The Steam runtime is located at ~/.steam/root/ubuntu12_32/steam-runtime/.

If you mix the Steam runtime libraries with system libraries you will run into binary incompatibility issues, see steam-for-linux issue #4768. Binary incompatibility can lead to the Steam client and games not starting (manifesting as a crash, as hanging or silently returning), audio issues and various other problems.

The steam package offers three ways to launch Steam:

As the Steam runtime libraries are older they can lack newer features, e.g. the OpenAL version of the Steam runtime lacks HRTF and surround71 support.

Steam native runtime

Warning: Using the Steam native runtime is not recommended as it might break some games due to binary incompatibility and it might miss some libraries present in the Steam runtime.

The steam-native script launches Steam with the STEAM_RUNTIME=0 environment variable making it ignore its runtime and only use system libraries.

The steam-native-runtime meta package depends on over 120 packages to pose a native replacement of the Steam runtime, some games may however still require additional packages. You can also use the Steam native runtime without steam-native-runtime by manually installing just the packages you need. See #Finding missing runtime libraries.

Debugging shared libraries

To see the shared libraries required by a program or a shared library run the ldd command on it, see ldd(1). The LD_LIBRARY_PATH and LD_PRELOAD environment variables can alter which shared libraries are loaded, see ld.so(8). To correctly debug a program or shared library it is therefore important that these environment variables in your debug environment match the environment you wish to debug.

If you figure out a missing library you can use pacman or pkgfile to search for packages that contain the missing library.

Finding missing game libraries

If a game fails to start, a possible reason is that it is missing required libraries. You can find out what libraries it requests by running ldd game_executable. game_executable is likely located somewhere in ~/.steam/root/steamapps/common/. Please note that most of these "missing" libraries are actually already included with Steam, and do not need to be installed globally.

Finding missing runtime libraries

If individual games or Steam itself is failing to launch when using steam-native you are probably missing libraries. To find the required libraries run:

$ cd ~/.steam/root/ubuntu12_32
$ file * | grep ELF | cut -d: -f1 | LD_LIBRARY_PATH=. xargs ldd | grep 'not found' | sort | uniq

Alternatively, run Steam with steam-runtime and use the following command to see which non-system libraries Steam is using (not all of these are part of the Steam runtime):

$ for i in $(pgrep steam); do sed '/\.local/!d;s/.*  //g' /proc/$i/maps; done | sort | uniq

Debugging Steam

The Steam launcher redirects its stdout and stderr to /tmp/dumps/USER_stdout.txt. This means you do not have to run Steam from the command-line to see that output.

It is possible to debug Steam to gain more information which could be useful to find out why something does not work.

You can set DEBUGGER environment variable with one of gdb, cgdb, valgrind, callgrind, strace and then start steam.

For example with gdb

$ DEBUGGER=gdb steam

gdb will open, then type run which will start steam and once crash happens you can type backtrace to see call stack.

Runtime issues

Segmentation fault when disabling runtime

steam-for-linux issue #3863

As per the bug report above, Steam crashes with the following error message when run with STEAM_RUNTIME=0:

/home/USER/.local/share/Steam/steam.sh: line 756: <variable numeric code> Segmentation fault (core dumped)

This happens because steamclient.so is linked to libudev.so.0 (lib32-libudev0AUR) which conflicts with libudev.so.1 (lib32-systemd).

A proposed workaround is to copy Steam's packaged 32-bit versions of libusb and libgudev to /usr/lib32:

# cp ~/.steam/root/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libgudev* /usr/lib32
# cp ~/.steam/root/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libusb* /usr/lib32

Notice that the workaround is necessary because the bug affects systems with lib32-libgudev and lib32-libusb installed.

Alternatively it has been successful to prioritize the loading of the libudev.so.1 (see comment on the same issue):

$ LD_PRELOAD=/usr/lib32/libudev.so.1 STEAM_RUNTIME=0 steam

'GLBCXX_3.X.XX' not found when using Bumblebee

This error is likely caused because Steam packages its own out of date libstdc++.so.6. See #Finding missing runtime libraries about working around the bad library. See also steam-for-linux issue 3773.

Game crashes immediately

This is likely due to #Steam runtime issues, see #Debugging shared libraries.

Disabling the in-game Steam Overlay in the game properties might help.

And finally, if those don't work, you should check Steam's output for any error from the game. You may encounter the following:

  • munmap_chunk(): invalid pointer
  • free(): invalid pointer

In these cases, try replacing the libsteam_api.so file from the problematic game with one of a game that works. This error usually happens for games that were not updated recently when Steam runtime is disabled. This error has been encountered with AYIM, Bastion and Monaco.

Version `CURL_OPENSSL_3` not found

This is because curl alone is not compatible with previous versions. You need to install the compatibility libraries:

One of the following messages may show up:

# Nuclear Throne
./nuclearthrone: /usr/lib32/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./nuclearthrone)

# Devil Daggers
./devildaggers: /usr/lib/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./devildaggers)

You need to install either libcurl-compat or lib32-libcurl-compat and link the compatibility library manually:

# Nuclear Throne
$ ln -s /usr/lib32/libcurl-compat.so.4.4.0 "LIBRARY/steamapps/common/Nuclear Throne/lib/libcurl.so.4"

# Devil Daggers
$ ln -s /usr/lib/libcurl-compat.so.4.4.0 LIBRARY/steamapps/common/devildaggers/lib64/libcurl.so.4

Steam webview/game browser not working in native runtime (Black screen)

Since the new Steam Friends UI update, the client webview isn't working correctly with the native-runtime.

./steamwebhelper: error while loading shared libraries: libpcre.so.3: cannot open shared object file: No such file or directory

It can be solved preloading glib libraries; Those don't require libpcre and selinux to work.

$ LD_PRELOAD="/usr/lib/libgio-2.0.so.0 /usr/lib/libglib-2.0.so.0" steam-native

Alternatively, you may create a symbolic link to the native Arch libpcre library.

# ln -s /usr/lib/libpcre.so /usr/lib64/libpcre.so.3

Steam: An X Error occurred

When using an NVidia GPU and proprietary drivers, Steam may fail to start and (if run from the terminal) produce errors of the form:

Steam: An X Error occurred
X Error of failed request:  GLXBadContext
Major opcode of failed request:  151
Serial number of failed request:  51
xerror_handler: X failed, continuing

Install the package lib32-nvidia-utils (or lib32-nvidia-390xx-utils if using an old GPU).

Audio issues

If the sections below do not address the issue, using the #Steam native runtime might help.

Configure PulseAudio

Games that explicitly depend on ALSA can break PulseAudio. Follow the directions for PulseAudio#ALSA to make these games use PulseAudio instead.

No audio or 756 Segmentation fault

First #Configure PulseAudio and see if that resolves the issue. If you do not have audio in the videos which play within the Steam client, it is possible that the ALSA libraries packaged with Steam are not working.

Attempting to playback a video within the steam client results in an error similar to:

ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave

A workaround is to rename or delete the alsa-lib folder and the libasound.so.* files. They can be found at:

~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/

An alternative workaround is to add the libasound.so.* library to the LD_PRELOAD environment variable:

LD_PRELOAD='/usr/$LIB/libasound.so.2 '${LD_PRELOAD} steam

If audio still won't work, adding the Pulseaudio-libs to the LD_PRELOAD variable may help:

LD_PRELOAD='/usr/$LIB/libpulse.so.0 /usr/$LIB/libpulse-simple.so.0 '${LD_PRELOAD}

Be advised that their names may change over time. If so, it is necessary to take a look in

~/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu

and find the new libraries and their versions.

Bugs reports have been filed: #3376 and #3504

FMOD sound engine

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: No source / bug report. (Discuss in Talk:Steam/Troubleshooting#)

The FMOD audio middleware package is a bit buggy, and as a result games using it may have sound problems.

It usually occurs when an unused sound device is used as default for ALSA. See Advanced Linux Sound Architecture#Set the default sound card.

Affected games: Hotline Miami, Hotline Miami 2, Transistor

PulseAudio & OpenAL: Audio streams can't be moved between devices

If you use PulseAudio and cannot move an audio stream between sinks, it might be because recent OpenAL versions default to disallow audio streams from being moved. Try to add the following to your ~/.alsoftrc:

[pulse]
allow-moves=true

Steam client issues

Cannot add library folder because of missing execute permissions

If you add another Steam library folder on another drive, you might get the error message:

New Steam library folder must be on a filesystem mounted with execute permissions

Make sure you are mounting the filesystem with the correct flags in your /etc/fstab, usually by adding exec to the list of mount parameter. The parameter must occur after any user or users parameter since these can imply noexec.

This error might also occur if your library folder does not contain a steamapps directory. Previous versions used SteamApps instead, so ensure the name is fully lowercase.

This error can also occur because of Steam runtime issues and may be fixed following the #Finding missing runtime libraries section or due to no space being left on the device. For debugging purposes it might be useful to run Steam from the console and observe the log.

Unusually slow download speed

If your Steam apps (games, software…) download speed through the client is unusually slow, but browsing the Steam store and streaming videos is unaffected, installing a DNS cache program, such as dnsmasq can help [1].

Something else that might help would be disabling IPv6[2].

"Needs to be online" error

If the Steam launcher refuses to start and you get an error saying: "Fatal Error: Steam needs to be online to update" while you are online, then there might be issues with name resolving.

Try to install nss-mdns or lib32-nss.

Steam forgets password

Related: steam-for-linux#5030

Steam for Linux has a bug which causes it to forget the password of some users.

As a workaround, after logging in to Steam, run

$ chmod -w ~/.steam/registry.vdf

This will make the file read-only so Steam cannot modify it, and thus not log you out.

Preventing crash memory dumps

Every time Steam crashes, it writes a memory dump to /tmp/dumps/. If Steam falls into a crash loop, the dump files can become quite large. When /tmp is mounted as tmpfs, memory and swap file can be consumed needlessly.

To prevent this, link /tmp/dumps/ to /dev/null:

# ln -s /dev/null /tmp/dumps

Or alternatively, create and modify permissions on /tmp/dumps. Then Steam will be unable to write dump files to the directory.

# mkdir /tmp/dumps
# chmod 600 /tmp/dumps

This also has the added benefit of Steam not uploading these dumps to Valve's servers.

Steam license problem with playing videos

Steam uses Google's Widevine DRM for some videos. If it is not installed you will get the following error:

This video requires a license to play which cannot be retrieved. This may be a temporary network condition. Please restart the video to try again.

To solve this issue follow the Streaming Videos on Steam support page.

No context menu for joining/inviting friends

Since the new Steam Friends UI update, it may be the case that in the right-click menu the entries for "Join Game", "Invite to Game" and "View Game Info" are missing.

In order to fix this, it maybe be necessary to install lsof.

Slow and unresponsive user interface

If you experience extremely slow and sluggish performance when using the Steam client it might help to disable the option "Enable GPU accelerated rendering in web views" under the "Interface" tab in the Steam client settings.

Steam Remote Play issues

See Steam#Steam Remote Play.

Remote Play does not work from Arch Linux host to Arch Linux guest

Chances are you are missing lib32-libcanberra. Once you install that, it should work as expected.

With that, Steam should no longer crash when trying to launch a game through Remote Play.

Hardware decoding not available

Remote Play hardware decoding uses vaapi, but steam requires libva2_32bit, where as Arch defaults to 64bit.

As a basic set, this is libva and lib32-libva. Intel graphics users will also require both libva-intel-driver and lib32-libva-intel-driver.

For more information about vaapi see hardware video acceleration.

It may also be necessary to remove the steam runtime version of libva, in order to force it to use system libraries. The current library in use can be found by using:

pgrep steam | xargs -I {} cat /proc/{}/maps | grep libva

If this shows locations in ~/.local/Share/steam steam is still using it's packaged version of libva. This can be rectified by deleting the libva library files at ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libva*, so that steam falls back to the system libraries.

Big Picture Mode minimizes itself after losing focus

This can occur when you play a game via Remote Play or if you have a multi-monitor setup and move the mouse outside of BPM's window. To prevent this, set the following environment variable and restart Steam

export SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0

See also the steam-for-linux issue 4769.

Other issues

Wrong ELF class

If you see this message in Steam's console output

ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.

you can safely ignore it. It is not really any error: Steam includes both 64- and 32-bit versions of some libraries and only one version will load successfully. This "error" is displayed even when Steam (and the in-game overlay) is working perfectly.

Multiple monitors setup

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Is this Nvidia-only? Can this be reproduced by anyone? Is there an upstream report? (Discuss in Talk:Steam/Troubleshooting#)

A setup with multiple monitors may prevent games from starting. Try to disable all additional displays, and then run a game. You can enable them after the game successfully started.

Also you can try running Steam with this environment variable set:

export LD_LIBRARY_PATH=/usr/lib32/nvidia:/usr/lib/nvidia:$LD_LIBRARY_PATH

Text is corrupt or missing

The Steam Support instructions for Windows seem to work on Linux also.

You can install them via the steam-fontsAUR package, or manually by downloading and installing SteamFonts.zip.

Note: When steam cannot find the Arial fonts, font-config likes to fall back onto the Helveticia bitmap font. Steam does not render this and possibly other bitmap fonts correctly, so either removing problem fonts or disabling bitmap fonts will most likely fix the issue without installing the Arial or ArialBold fonts. The font being used in place of Arial can be found with the command
$ fc-match -v Arial

SetLocale('en_US.UTF-8') fails at game startup or typing non-ASCII characters does not work in the Steam client

You need to generate the en_US.UTF-8 UTF-8 locale. See Locale#Generating locales.

Missing libc

This could be due to a corrupt Steam executable. Check the output of:

$ ldd ~/.local/share/Steam/ubuntu12_32/steam

Should ldd claim that it is not a dynamic executable, then Steam likely corrupted the binary during an update. The following should fix the issue:

$ cd ~/.local/share/Steam/
$ ./steam.sh --reset

If it doesn't, try to delete the ~/.local/share/Steam/ directory and launch Steam again, telling it to reinstall itself.

This error message can also occur due to a bug in Steam which occurs when your $HOME directory ends in a slash (Valve GitHub issue 3730). This can be fixed by editing /etc/passwd and changing /home/<username>/ to home/<username>, then logging out and in again. Afterwards, Steam should repair itself automatically.

Games do not launch on older Intel hardware

source

On older Intel hardware which doesn't support OpenGL 3, such as Intel GMA chips or Westmere CPUs, games may immediately crash when run. It appears as a gameoverlayrenderer.so error in /tmp/dumps/mobile_stdout.txt, but looking in /tmp/gameoverlayrenderer.log it shows a GLXBadFBConfig error.

This can be fixed, by forcing the game to use a later version of OpenGL than it wants. Add MESA_GL_VERSION_OVERRIDE=3.1 MESA_GLSL_VERSION_OVERRIDE=140 to your launch options.

Mesa: Game does not launch, complaining about OpenGL version supported by the card

Some games are badly programmed, to use any OpenGL version above 3.0. With Mesa, an application has to request a specific core profile. If it doesn't make such a request, only OpenGL 3.0 and lower are available.

This can be fixed, by forcing the game to use a version of OpenGL it actually needs. Add MESA_GL_VERSION_OVERRIDE=4.1 MESA_GLSL_VERSION_OVERRIDE=410 to your launch options.

2K games do not run on XFS partitions

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Seems to be a general issue, e.g. [3] (Discuss in Talk:Steam/Troubleshooting#)

If you are running 2K games such as Civilization 5 on XFS partitions, then the game may not start or run properly due to how the game loads files as it starts. [4]

Steam controller not being detected correctly

See Gamepad#Steam Controller.

Steam controller makes a game crash

See Gamepad#Steam Controller makes a game crash or not recognized.

Steam hangs on "Installing breakpad exception handler..."

BBS#177245

You have an Nvidia GPU and Steam has the following output:

Running Steam on arch rolling 64-bit
STEAM_RUNTIME is enabled automatically
Installing breakpad exception handler for appid(steam)/version(0_client)

Then nothing else happens. Ensure you have the correct drivers installed as well as their 32-bit versions (the 64-bit and 32-bit variants have to have the same versions): see NVIDIA#Installation.

Killing standalone compositors when launching games

Further to this, utilising the %command% switch, you can kill standalone compositors (such as Xcompmgr or Compton) - which can cause lag and tearing in some games on some systems - and relaunch them after the game ends by adding the following to your game's launch options.

 killall compton && %command%; compton -b &

Replace compton in the above command with whatever your compositor is. You can also add -options to %command% or compton, of course.

Steam will latch on to any processes launched after %command% and your Steam status will show as in game. So in this example, we run the compositor through nohup so it is not attached to Steam (it will keep running if you close Steam) and follow it with an ampersand so that the line of commands ends, clearing your Steam status.

Symbol lookup error using DRI3

Steam outputs this error and exits.

 symbol lookup error: /usr/lib/libxcb-dri3.so.0: undefined symbol: xcb_send_request_with_fds

To work around this, run Steam with LIBGL_DRI3_DISABLE=1, disabling DRI3 for Steam.

Launching games on Nvidia optimus laptops

To be able to play games which require using Nvidia GPU (for example, Hitman 2016) on optimus enabled laptop, you should start game with primusrun prefix in launch options. Otherwise, game will not work.

Find the game in steam library, right click -> Properties -> SET LAUNCH OPTIONS. Change options to

primusrun %command%

Running steam with primusrum used to work. While steam has changed some behavior that now running steam with primusrun would not have effect on launching games. As a result, you need to set launch options for each game (and you do NOT have to run steam with primusrun).

For primusrun, VSYNC is enabled by default it could result in a mouse input delay lag, slightly decrease performance and in-game FPS might be locked to a refresh rate of a monitor/display. In order to disable VSYNC for primusrun default value of option vblank_mode needs to be overridden by environment variable.

vblank_mode=0 primusrun %command%

Same with optirun that uses primus as a bridge.

vblank_mode=0 optirun -b primus %command%

If that did not work try:

LD_PRELOAD="libpthread.so.0 libGL.so.1" __GL_THREADED_OPTIMIZATIONS=1 optirun %command%

For more details see Bumblebee#Primusrun mouse delay (disable VSYNC).