Steam/Client troubleshooting

From Gentoo Wiki
< Steam
Jump to: navigation, search

This article provides troubleshooting details for the Steam client on Linux systems.

Big Picture Mode and games not working with controller

This issue is most likely caused by incorrect uinput device node permissions.

Sony DualShock 3

Check /dev/uinput:

crw-rw---- 1 root input 10, 223 Apr  3 21:44 /dev/uinput

In order for Big Picture Mode to see the controller, it needs the user to have write access to it. The solution is a udev rule:

FILE /etc/udev/rules.d/60-dualshock3.rules
# Fix permissions to allow the DualShock 3 controller to be used by Steam
SUBSYSTEM=="usb", ATTRS{idVendor}=="054c", MODE="0666"
KERNEL=="uinput", SUBSYSTEM=="misc", MODE="0660", GROUP="input"

After saving the file, udev will need to be "re-triggered":

root #udevadm control --reload
root #udevadm trigger

If the user(s) that intend to use the controller with Steam are not already in the input group, they will need to be added:

root #gpasswd -a <user> input

After that, log out and back in as said user. Steam should detect the controller without issue. A good way to test this is to make sure Steam has focus and press the PlayStation button. If Big Picture mode starts, the controller is detected and configured correctly.

Microsoft Xbox 360 controller

The Microsoft Xbox 360 controller should work out of the box with steam-overlay and CONFIG_JOYSTICK_XPAD compiled into the kernel.

Direct rendering is not being used

If Steam starts with the following error:

Error: OpenGL GLX context is not using direct rendering, which may cause performance problems.

Confirm if direct rendering is enabled with glxinfo, which is provided by the x11-apps/mesa-progs package:

root #glxinfo | grep "direct rendering"
direct rendering: Yes

If direct rendering is not enabled, ensure that the correct OpenGL implementation is selected:

root #eselect opengl list

Next, ensure that the user running Steam has sufficient permissions to access direct rendering. If the USE variable is set to acl and ConsoleKit or systemd is being used, permissions will be handled automatically. Otherwise, add the user running Steam to the video group:

root #gpasswd -a user video

If direct rendering is enabled and the correct OpenGL implementation is selected, then this issue may be caused by app-eselect/eselect-opengl 1.3*.[1]. This issue has been fixed for users of the steam-launcher ebuild. Otherwise, run the following as a temporary workaround:

For ATI drivers:

user $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/opengl/ati/lib" steam

For Nvidia drivers:

user $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/opengl/nvidia/lib" steam

If direct rendering is still not enabled, refer to the Steam Knowledge Base article on direct rendering for possible solutions.

Hardened Gentoo

It seems that the Steam binary has rwx bits set, and needs to be PaX marked in order to work on a hardened system:

user $paxctl-ng -m ~/.local/share/Steam/ubuntu12_32/steam

The binaries of most games should also be PaX marked:

user $paxctl-ng -m ~/.local/share/Steam/steamapps/common/World\ of\ Goo/WorldOfGoo
user $paxctl-ng -m ~/.local/share/Steam/steamapps/common/Uplink/uplink.bin.x86_64
user $paxctl-ng -m ~/.local/share/Steam/steamapps/common/Team\ Fortress\ 2/hl2_linux

Failure to perform PaX marking will result in the game failing to run, with little information given. To check if a game needs to be PaX marked, run the game's startup script or binary file (found in ~/.local/share/Steam/steamapps or ~/.local/share/Steam/steamapps/common) under a debugger. This can be accomplished with some of Valve's provided startup scripts by setting the GAME_DEBUGGER environment variable to gdb:

user $env GAME_DEBUGGER=gdb ./hl2.sh

If a binary needs to be PaX marked, gdb should output something similar to:

warning: Cannot call inferior functions, Linux kernel PaX protection forbids return to non-executable pages!

and/or:

Cannot access memory at address 0x80486c6.

After an update in July 2013, Steam also needs a PaX marked /bin/bash when the OpenGL libraries require rwx markings, otherwise games will fail to run from the Steam client[2]:

user $sudo paxctl-ng -m /bin/bash

However, this results in Bash failing to run. It is also a security issue, and it is strongly recommended to try without PaX marking. If it works when using the proprietary Nvidia drivers, please make a note of it on this page.

libGL fails to load driver

The Steam runtime overrides various system libraries, including libgcc, libstdc++, and libgpg-error with its own bundled versions[3]. This can result in Steam failing to start with the following error:

libGL error: unable to load driver: <driver_name>.so

To workaround this issue, locate the problematic library by starting Steam with libGL debugging enabled:

user $LIBGL_DEBUG=verbose /usr/bin/steam
libGL: dlopen /usr/lib32/dri/i965_dri.so failed (/usr/lib32/libgcrypt.so.20: symbol gpgrt_lock_lock, version GPG_ERROR_1.0 not defined in file libgpg-error.so.0 with link time reference)
libGL error: unable to load driver: i965_dri.so

Next, delete the problematic library from the Steam runtime to force the use of system library instead:

user $find ~/.steam/root/ -name "libgpg-error.so*" -print

Repeat the above to discover other problematic libraries in the Steam runtime. The bundled libraries may reappear after every Steam update. In this case simply delete the libraries again from the Steam runtime.

If the above solution does not work, run the following as a temporary workaround:

For Nvidia drivers:

user $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/opengl/nvidia/lib" steam

libGL fails to load driver with AMDGPU

When using AMDGPU, Steam may fail to start with the following error:

libGL error: unable to load driver: radeonsi_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: radeonsi
libGL error: unable to load driver: radeonsi_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: radeonsi
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast

To workaround this issue, disable the problematic libraries from the Steam runtime to force the use of system libraries instead[4]:

user $mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgcc_s.so.1{,.disable}
user $mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6{,.disable}
Note
Tested with a Sapphire Radeon HD 7870 GPU on ~amd64 and VIDEO_CARDS="amdgpu radeonsi" in /etc/portage/make.conf.

Memory corruption

If Steam starts with the following error:

*** glibc detected *** zenity: malloc(): memory corruption: 0x00000000016cf020 ***

Installing the x11-libs/libXi package should fix the issue.

root #emerge --ask x11-libs/libXi

Missing fonts

If Steam is having issues with missing fonts, installing the media-fonts/font-bitstream-100dpi and media-fonts/corefonts packages may fix the issue.

root #emerge --ask media-fonts/font-bitstream-100dpi media-fonts/corefonts

If the X server does not recognize the newly installed fonts, run the following:

user $xset +fp /usr/share/fonts/100dpi
user $xset +fp /usr/share/fonts/corefonts
user $xset fp rehash

Reset the installation

To reset (i.e. wipe) the Steam installation, including installed games, and reinstall Steam without losing data:

user $steam --reset

Reversed X cursor

If an X cursor theme has not been set by the desktop environment or window manager, Steam will override the default X cursor theme. This can result in a reversed X cursor from left to right. The issue can be fixed by setting an X cursor theme, if one is available, or by installing an X cursor theme:

root #emerge --ask x11-themes/vanilla-dmz-xcursors

If the X cursor is still reversed, even after exiting Steam, run the following to fix the issue:

user $xsetroot -cursor_name left_ptr

Segfault when remember my password is selected

Selecting the Remember my password option at the Steam login dialog when Steam is running without D-Bus, will cause Steam to segfault the next time it is started[5]. This issue can be fixed by running the following:

user $rm -fr ~/.local/share/Steam/config

Segfault when starting Steam

If Steam fails to start with the following error:

munmap_chunk(): invalid pointer: 0xf75aca24
free(): invalid pointer: 0xffca16d0

Setting the locale to C may fix the issue[6]:

user $LANG=C steam

Segfault when using apulse

Using Steam with media-sound/apulse while D-Bus is not running, will cause Steam to segfault with a Connection refused message. This issue can be fixed by ensuring that D-Bus is running:

root #rc-service dbus start

Taskbar button persists even when closed or minimized

Depending on the desktop environment being used, the Steam taskbar button may persist even when the Steam window is closed or minimized to the system tray[7]. To correct this behavior, force the Steam window to close instead of minimize:

user $STEAM_FRAME_FORCE_CLOSE=1 steam

To set the STEAM_FRAME_FORCE_CLOSE environment variable permanently, add the following to the shell login initialization file:

FILE ~/.bash_profileSetting a local environment variable with Bash
export STEAM_FRAME_FORCE_CLOSE=1

Log out and back in to have the changes take effect.

Steam hangs when installing a game

If clicking the Install button on a Steam game page causes the Steam client to hang with the following console output:

GameAction [AppID 255710, ActionID 1] : LaunchApp failed with AppError_18 with ""              
GameAction [AppID 255710, ActionID 1] : LaunchApp changed task to Failed with ""

It might be possible to fix this by running Steam with:

user $STEAM_RUNTIME=1 STEAM_RUNTIME_PREFER_HOST_LIBRARIES=1 steam

Use system libraries

Steam bundles many libraries which are used instead of the system libraries. To force Steam to use the system libraries, disable the Steam runtime:

Warning
It is not recommended to disable the Steam runtime, as it can lead to numerous problems, including runtime and missing 32-bit libraries.
user $STEAM_RUNTIME=0 steam

To set the STEAM_RUNTIME environment variable permanently, add the following to the shell login initialization file:

FILE ~/.bash_profileSetting a local environment variable with Bash
export STEAM_RUNTIME=0

Log out and back in to have the changes take effect.

Video drivers

  • If ATI Legacy drivers are used, and a Valve game (Counter-Strike: Source, Team Fortress 2, etc.) fails to start with the following error:
Required OpenGL extension "GL_EXT_texture_sRGB_decode" is not supported. Please update your OpenGL driver.

Update the ATI Legacy drivers to the most recent version[8].

xterm launches briefly and then closes

This issue is caused by the shell being set to something other than a POSIX compliant shell (i.e. fish). Change the shell to a POSIX compliant shell and accept the Steam license agreement. The shell can be set back afterwards.

References

  1. Michał Górny. steam-launcher likely broken with eselect-opengl-1.3*, anyc's Steam Overlay, January 2nd, 2015. Retrieved on May 27th, 2015.
  2. Alex Efros. Compatibility with PaX/GrSecurity, Steam for Linux, December 22nd, 2012. Retrieved on May 28th, 2015.
  3. jsa1983. Problem with libstdc++.so.6 bundled with steam-runtime 2014-04-15, Steam for Linux, April 26th, 2014. Retrieved on December 26th, 2015.
  4. itsnikolay. Problem with installing Steam on Ubuntu 15.04+, Ask Ubuntu, May 1st, 2015. Retrieved on September 19th, 2018.
  5. Shished. Steam segfaults when "remember my password" is checked, Steam for Linux, July 28th, 2014. Retrieved on May 25th, 2015.
  6. pnrao. Steam client not launching, Steam for Linux, March 6th, 2017. Retrieved on June 11th, 2017.
  7. Kevin Cox. Close to Tray, Steam for Linux, January 30th, 2013. Retrieved on May 27th, 2015.
  8. Mark Browning. [WORKAROUND] Allow TF2 to run with legacy ATI drivers 12.6., Steam for Linux Steam Community, December 4th, 2012. Retrieved on May 30th, 2015.