Difference between revisions of "Steam/Client troubleshooting"
m (Avoid title case) |
(Updated paths) |
||
Line 76: | Line 76: | ||
The binaries of most games should also be PaX marked: | The binaries of most games should also be PaX marked: | ||
− | {{Cmd|paxctl-ng -m ~/.local/share/Steam/ | + | {{Cmd|paxctl-ng -m ~/.local/share/Steam/steamapps/common/World\ of\ Goo/WorldOfGoo}} |
− | {{Cmd|paxctl-ng -m ~/.local/share/Steam/ | + | {{Cmd|paxctl-ng -m ~/.local/share/Steam/steamapps/common/Uplink/uplink.bin.x86_64}} |
− | {{Cmd|paxctl-ng -m ~/.local/share/Steam/ | + | {{Cmd|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 {{Path|~/.local/share/Steam/ | + | 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 {{Path|~/.local/share/Steam/steamapps}} or {{Path|~/.local/share/Steam/steamapps/common}}) under a debugger. This can be accomplished with some of Valve's provided startup scripts by setting the <var>GAME_DEBUGGER</var> environment variable to <code>gdb</code>: |
{{Cmd|env GAME_DEBUGGER{{=}}gdb ./hl2.sh}} | {{Cmd|env GAME_DEBUGGER{{=}}gdb ./hl2.sh}} |
Revision as of 04:39, 21 September 2018
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:
/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
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}
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:
~/.bash_profile
Setting a local environment variable with Bashexport 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:
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:
~/.bash_profile
Setting a local environment variable with Bashexport 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
- ↑ Michał Górny. steam-launcher likely broken with eselect-opengl-1.3*, anyc's Steam Overlay, January 2nd, 2015. Retrieved on May 27th, 2015.
- ↑ Alex Efros. Compatibility with PaX/GrSecurity, Steam for Linux, December 22nd, 2012. Retrieved on May 28th, 2015.
- ↑ jsa1983. Problem with libstdc++.so.6 bundled with steam-runtime 2014-04-15, Steam for Linux, April 26th, 2014. Retrieved on December 26th, 2015.
- ↑ itsnikolay. Problem with installing Steam on Ubuntu 15.04+, Ask Ubuntu, May 1st, 2015. Retrieved on September 19th, 2018.
- ↑ Shished. Steam segfaults when "remember my password" is checked, Steam for Linux, July 28th, 2014. Retrieved on May 25th, 2015.
- ↑ pnrao. Steam client not launching, Steam for Linux, March 6th, 2017. Retrieved on June 11th, 2017.
- ↑ Kevin Cox. Close to Tray, Steam for Linux, January 30th, 2013. Retrieved on May 27th, 2015.
- ↑ 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.