Steam/Games troubleshooting

From Gentoo Wiki
< Steam
Jump to:navigation Jump to:search

This article provides troubleshooting details for specific games running via Steam.

Steam runtime

If the Steam runtime is enabled and some games are not starting (for example Dying Light or Life Is Strange), setting STEAM_RUNTIME_PREFER_HOST_LIBRARIES=0 may fix the issue.

Texture compression

Note
Installing the media-libs/libtxc_dxtn package is no longer necessary since the S3TC patent expired on October 2, 2017. S3TC support is now enabled by default with Mesa 17.3[1].

Many games, especially those that use the Source engine, require S3 Texture Compression (S3TC) support. Without S3TC support, these games will usually have black or missing textures, or fail to start.

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

root #glxinfo | grep GL_EXT_texture_compression_s3tc
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_filter_anisotropic, 
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map,

If S3TC support is not enabled, ensure that the VIDEO_CARDS variable in /etc/portage/make.conf is set to the correct value, and update the video driver to most recent version.

If S3TC support is enabled, but games fail to start with the following error:

This system does not support the OpenGL extension GL_EXT_texture_compression_s3tc

Force enable S3TC support with:

user $force_s3tc_enable=true steam

If nouveau drivers are being used, installing x11-libs/gtkglarea may be required to fix the above error.

root #emerge --ask x11-libs/gtkglarea

Black Mesa

  • If the game is launched but shows nothing, add LD_PRELOAD="/usr/lib64/gcc/x86_64-pc-linux-gnu/<your gcc version number>/32/libstdc++.so.6" %command% to the launch options in Library->Black Mesa->Properties->General->Set launch options...

Borderlands 2 and Borderlands: The Pre-Sequel

  • Gearbox's SHiFT service assumes the underlying distribution is Ubuntu, which stores its SSL certificates in /usr/lib/ssl, whereas Gentoo (by default) stores them in /etc/ssl. This difference prevents the redemption of SHiFT codes on Gentoo. To workaround this issue, add SSL_CERT_DIR="/etc/ssl/certs" %command% to the launch options in Library->{Borderlands 2,Borderlands: The Pre-Sequel}->Properties->General->Set launch options...
  • If the game is launched but closes almost immediately try adding -nostartupmovies to the launch options in Library->{Borderlands 2,Borderlands: The Pre-Sequel}->Properties->General->Set launch options... This fixes the BorderlandsPreS[...] general protection ip:.. sp:.. error:0 in libopenal.so.1.18.2. Another solution is to recompile x11-libs/libxcb with -O1, media-sound/pulseaudio with -O1 and without -march and sys-libs/glibc without -march[2].
  • Additionally the game may still crash at points during game play, when creating a new character or when traveling to one of the DLC's. To workaround this issue edit the willowengine.ini file. Find the section [FullScreenMovie] and change the value of bForceNoMovies from FALSE to TRUE. The files can be found at ~/.local/share/aspyr-media/borderlands 2/willowgame/config/willowengine.ini and ~/.local/share/aspyr-media/borderlands the pre-sequel/willowgame/config/willowengine.ini.
  • Currently (tested: 22.11.2022 on Arch Linux + Gentoo) it can happen that Borderlands 2 immediately crashes on startup. dmesg should print something about a segfault in libc.so. In Steam one can try to simply add the following to the Launch options: LD_PRELOAD="" %command%. It essentially clears the LD_PRELOAD variable, which would normally be used by Steam to add the Overlay over Games. Clearing this variable therefore also means no Steam overlay in Games.

Cities: Skylines

  • In case you have set some libraries in the environmental variable LD_PRELOAD of your linux session, make sure you run the game with this variable emptied or filled only with libraries directly related to the game. Empting can be done by setting LD_PRELOAD="" %command% in the launch options in Library->Cities: Skylines->Properties->General->Set launch options.... Unrelated libraries in this variable can cause the game will not start or become unstable.

Dead Cells

Dead cells requires the Wayland libraries to function correctly, and will complain if the libraries are missing when starting.

root #emerge --ask --noreplace dev-libs/wayland

Death Road to Canada

  • Death Road to Canada requires the following USE flags to function correctly and for in-game music:
FILE /etc/portage/package.use/steam
media-libs/libsdl2 opengl
media-libs/sdl2-mixer mp3 mad

Rebuild the media-libs/libsdl2 and media-libs/sdl2-mixer packages:

root #emerge --ask --oneshot media-libs/libsdl2 media-libs/sdl2-mixer

Add LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command% to the launch options in Library->Death Road to Canada->Properties->General->Set launch options...

Deus Ex: Mankind Divided

If only the cutscenes have audio/sound, but the menus and gameplay have no audio/sound, try emerging media-sound/pulseaudio.

DiRT Showdown

  • If an Intel GPU is being used and the launcher fails to start with the following error:
Unfortunately your machine doesn't meet the full OpenGL 4.1 requirements so the game may not perform correctly

Add MESA_GL_VERSION_OVERRIDE=4.1 MESA_GLSL_VERSION_OVERRIDE=410 %command% to the launch options in Library->DiRT Showdown->Properties->General->Set launch options... Intel Broadwell and Skylake based GPUs also require INTEL_DEBUG=vec4 to be added to the launch options[4].

  • If an Intel GPU is being used, the launch options can be removed after upgrading to Mesa 12.0.1.

Dota 2

  • If a red screen is visible during startup and textures are missing in-game, enable texture compression support[7].
  • If some textures are not clickable (e.g. the character can not move at the fountain when the right mouse button is clicked), verify the integrity of the game cache.
  • Was noticed the following issue: in some cases the game will fail to ping any server and return this message instead:
Unable to ping any region. Check your Internet connection.

The exact reason is unknown, but is suspected to be related to router. Try to plug in the Ethernet cable directly into your PC if you are experiencing this problem.

Easy Anti-Cheat

If you get a "Failed to load the anti-cheat module" error with Easy Anti-Cheat on proton games, make sure the hash-sysv-compat use flag is enabled on sys-libs/glibc

Exiled Kingdoms

If the game produces the following error:

Exception in thread "LWJGL Application" java.lang.ExceptionInInitializerError
        at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync(LwjglGraphics.java:591)
        at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
        at org.lwjgl.opengl.LinuxDisplay.getAvailableDisplayModes(LinuxDisplay.java:954)
        at org.lwjgl.opengl.LinuxDisplay.init(LinuxDisplay.java:738)
        at org.lwjgl.opengl.Display.<clinit>(Display.java:138)
        ... 2 more
AL lib: (EE) alc_cleanup: 1 device not closed

Ensure x11-apps/xrandr is installed.

Firewatch

  • If the game fails to start with the following terminal error:
Unable to preload the following plugins: libCSteamworks.so

Try to add LD_PRELOAD=~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0 %command% to the launch options in Library->Firewatch->Properties->General->Set launch options....

Half-Life 2

Half-Life 2 and other Source-engine 1 based games (e.g. Portal) may segfault because the stack is no longer 16-byte aligned when the hl2_linux process calls out to glibc. A symptom that may be exhibited is a segfaulting SIMD instruction (or rather it raises a general protection error), for example vmovdqa in fseek/_IO_file_seekoff/_IO_new_file_seekoff.

To fix this, enable the stack-realign USE flag for sys-libs/glibc which adds -mstackrealign to its CFLAGS/CXXFLAGS for x86/multilib [8]. See package.env for information about setting per-package build options. Functions then have an automatic-alignment-fixing entry which restores the 16-byte-alignment-assumption often used for SSE2/AVX. See also bug #616402 and the relevant Fedora bug.

Insurgency

If the game crashes with the following errors:

failed to dlopen /home/user/.steam/steam/steamapps/common/insurgency2/bin/engine.so error=/home/user/.steam/steam/steamapps/common/insurgency2/bin/libgcc_s.so.1: version `GCC_7.0.0' not found (required by /usr/lib32/libopenal.so.1)

AppFramework : Unable to load library module engine.so!

Unable to load interface VCvarQuery001 from engine.so, requested from EXE.

Edit the file insurgency.sh in the default game directory. Remove or comment out lines 27-29, where the lib path of game is prepended to LD_LIBRARY_PATH. This will force the game to use system libraries instead.

Knights of the Old Republic II

  • The Linux port may crash on startup with general protection faults, check dmesg for cause:
[  911.240241] traps: KOTOR2[4818] general protection fault ip:ef68f770 sp:f0583974 error:0 in libpulsecommon-16.1.so[ef67c000+4b000]
[ 2011.447025] traps: KOTOR2[12533] general protection fault ip:f7506924 sp:f0582574 error:0 in libc.so.6[f7420000+179000]

Left 4 Dead 2

  • If black textures are visible, enable texture compression support.
  • If environment light is too dark inside the game, make sure run the game using dedicated graphic driver.
  • If nvidia driver is intended to be used, enable 32-bit libraries support for x11-drivers/nvidia-drivers.

Life Is Strange

  • If the launcher fails to start, add LD_LIBRARY_PATH="$HOME/.steam/root/steamapps/common/Life Is Strange/lib/x86_64:$HOME/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu:$HOME/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu" %command% to the launch options in Library->Life Is Strange->Properties->General->Set launch options...

Planetary Annihilation: TITANS

root #emerge --ask media-libs/libsdl2
FILE /etc/portage/make.conf
CURL_SSL="gnutls"
root #emerge --ask net-misc/curl

Planetary Annihilation: TITANS is expecting to find libudev.so.0. Within the Planetary Annihilation: TITANS runtime directory, create a symbolic link to /lib/libudev.so.1:

user $ln -s /lib/libudev.so.1 libudev.so.0

Rust (legacy)

  • If the launcher fails to start, add LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command% to the launch options in Library->Rust->Properties->General->Set launch options...

Sid Meier's Civilization V

  • If a black screen is visible and the introduction music is audible during startup, change the value of FSResID[9]:
FILE ~/.local/share/Aspyr/Sid Meier's Civilization 5/GraphicsSettingsDX9.ini
FSResID = 7

The correct value for FSResID appears to be system dependent, and may require setting different values before working.

  • If the game crashes almost immediately and syslog/dmesg shows:
[120551.527719] traps: Civ5XP[14295] general protection fault ip:f72f2855 sp:f2a9eb34 error:0 in libxcb.so.1.1.0[f72e7000+2c000]

where the library might be libxcb.so.1.1.0, libc-2.30.so, or libasound.so.2.0.0 (amongst others), try recompiling x11-libs/libxcb, sys-libs/glibc, media-libs/alsa-lib and media-sound/pulseaudio and with CFLAGS -O1[2] and -march=x86-64.

  • If the game crashes during gameplay on a system that has 8 or more logical cores and dmesg shows the following segfault:
[371471.978756] Civ5XP[2293]: segfault at 14 ip 000000000885bd5f sp 00000000882ff080 error 4
[371471.978762] Civ5XP[2292]: segfault at 0 ip 0000000008cd8534 sp 00000000e636afe0 error 4
[371471.978763]  in Civ5XP[8048000+22a7000]
[371471.978764]  in Civ5XP[8048000+22a7000]
[371471.978767] Code: 00 00 00 00 5b 81 c3 f2 ea 62 01 8b b4 24 88 00 00 00 8b bc 24 84 00 00 00 8b 94 24 80 00 00 00 0f b7 87 88 00 00 00 8b 4a 04 <8b>
2c 81 85 ed 0f 84 ef 00 00 00 8b 0a 8b 52 08 89 54 24 20 f3 0f
[371471.978768] Code: 44 24 20 c7 00 00 00 00 00 83 c4 0c 5e 5f 5b 5d c3 0f 0b 55 53 57 56 83 ec 0c e8 00 00 00 00 5b 8b 6c 24 2c 8b 44 24 24 8b 00 <8b>
70 14 8b 48 18 0f b7 d5 89 54 24 08 8d 14 11 8b 78 04 81 c3 ac

Try adding taskset -c 0-3 %command% to the launch options in Library->Sid Meier's Civilization V->Properties->General->Set launch options... so that the game only uses 4 physical CPU cores (and 8 threads, with hyper-threading)[10]. Note that the number of cores given as an argument to taskset depends on the system CPU, and it should be set so that the number of threads available isn't above 8.

Starbound

  • If the launcher fails to start with the following error:
This application failed to start because it could not find or load the Qt platform plugin "xcb".

Available platform plugins are: xcb.

Reinstalling the application may fix this problem.

Add $(dirname %command%)/starbound to the launch options in Library->Starbound->Properties->General->Set launch options...

Stealth Bastard Deluxe

root #emerge --ask media-fonts/font-misc-misc

Stealth Bastard Deluxe specifically requests the fonts 9x15/9x15b, which can be checked for availability with x11-apps/xlsfonts. Otherwise, add the fonts to the font path, or create a font alias:

FILE /usr/share/fonts/misc/fonts.alias
9x15 -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1
9x15B -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso10646-1

Stellaris

Stellaris requires texture compression support.

Team Fortress 2

  • TF2 may segfault on start if sys-libs/glibc is not built with -mstackrealign. See Half-Life 2 section.
  • If a black screen is visible for 1-2 seconds, add -nojoy to the launch options in Library->Team Fortress 2->Properties->General->Set launch options...
  • If app-crypt/p11-kit is built with 32-bit support, Team Fortress 2 will segfault on start. The current workaround is to disable 32-bit ABI for this library[12]:
FILE /etc/portage/package.use/steam
# 32-bit ABI of this lib causes Team Fortess 2 to segfault on start
# https://github.com/ValveSoftware/Source-1-Games/issues/2520
app-crypt/p11-kit -abi_x86_32
  • If launching TF2 results in no audio, emerge media-libs/libsdl2 with the pulseaudio USE flag.

Terraforming Mars (or Windows-only games in general)

If Windows-only games crash without even displaying a window, and the Steam log include a line that begins:

wine: Unhandled exception 0x20474343 in thread..

the cause might be that the system Mesa library (on which Steam depends) is not compiled with Vulkan support. Follow the instructions on the Vulkan page to rectify this.

Terraria

The Witcher 2: Assassins of Kings

  • If the game fails to start with the following terminal error after pressing "Launch game" in the launcher:
eON_Core::init() - failed to initialise SDL2: SDL not built with haptic (force feedback) support
ERROR - eON failed to initialise!

Try to add LD_PRELOAD=~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/i386-linux-gnu/libSDL2-2.0.so.0 %command% to the launch options in Library->The Witcher 2: Assassins of Kings->Properties->General->Set launch options....

Transistor

Incorrect sound card selected

Transistor uses the FMOD engine, which can sometimes detect the wrong default device. Determine the index of the card to be used with aplay -l's output, then put that index into $HOME/.local/share/Transistor/FMODDriver.txt. For example, to use the first card detected by ALSA (index 0):

user $echo "0" > ~/.local/share/Transistor/FMODDriver.txt

Relaunch Transistor and the chosen card should be outputting its sound.

Unity-based games

  • Many games that utilize the Unity3D engine released in late 2015 or later either display a black screen for a few seconds and segfault, or run but without sound[13]. To workaround this issue, disable the Steam runtime for the game by adding LD_LIBRARY_PATH="" %command% to the game's launch options. It may also be possible to run the game without Steam, but some games will force the use of Steam and keep failing.
  • Other Unity-based games such as Hollow Knight or Mother Russia Bleeds will show the screen for two seconds, terminate, and then write to a log file located in /home/user/.config/unity3d/<developer name>/<game name>/Player.log. This error is caused by the OpenGL version not matching up to what the game is requesting. To work around this, add MESA_GL_VERSION_OVERRIDE=3.3 MESA_GLSL_VERSION_OVERRIDE=330 %command% to the game's launch options. This will override the OpenGL version for that particular game, allowing it to run.
  • Some games, notably Wasteland 2 Director's Cut, might require PulseAudio to be started manually prior to launching the game, especially on desktop environments which do not have PulseAudio integrated. Torment: Tides of Numenera did not require PulseAudio to be started manually when the LD_LIBRARY_PATH method above was used.
  • It might be that Unity does not fall back to OpenGL, therefore it might be necessary to set the following Unity parameter as Steam launch option:
CODE Force OpenGL
-force-glcore

War Thunder

If the game fails to start with the crash report dialog saying:

We are sorry, but something went wrong.

And terminal error:

double free or corruption (out)

Try to add LD_PRELOAD=linux64/libsteam_api.so %command% to the launch options in Library->War Thunder->Properties->General->Set launch options....

X3: Terran Conflict and X3: Albion Prelude

  • If red, green and blue stripes are visible, or the launcher fails to start, enable texture compression support[14].

Yooka-Laylee

Yooka-Laylee will fail to start if a controller is connected (the game is only really playable with a controller).

user $cd ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu
user $rm libudev.so.0
user $ln -s /usr/lib/libudev.so libudev.so.0

Proton: No audio with pipewire

If you do not receive audio output from games running in proton and see messages in your journal like pipewire[2216]: spa.alsa: front:3: (125 missed) snd_pcm_avail after recover: Broken pipe then (according to some assistance received in #pipewire) 'your system is too slow'.

As a workaround you can increase either the quantum or headroom.

To increase the quantum:

first, with no audio playing run the command below

user $pw-metadata -n settings 0 clock.force-quantum 2048
Found "settings" metadata 30
set property: id:0 key:clock.force-quantum value:2048 type:(null)

If that works, set the changes permanently:

FILE /etc/pipewire/pipewire.conf.d/01-inrease-quantum.conf
context.properties = {
        default.clock.quantum     = 2048
        default.clock.min-quantum = 1024
        default.clock.max-quantum = 4096
}

To increase the headroom:

Create a new file named $HOME/.config/wireplumber/main.lua.d/51-custom.lua with the following content:

FILE $HOME/.config/wireplumber/main.lua.d/51-custom.lua
alsa_monitor.rules = {
  {
    matches = {
      {
        -- Matches all sources.
        { "node.name", "matches", "alsa_input.*" },
      },
      {
        -- Matches all sinks.
        { "node.name", "matches", "alsa_output.*" },
      },
    },
    apply_properties = {
      ["api.alsa.headroom"]      = 64,
    },
  },
}

Then restart the daemons with: systemctl --user restart pipewire{,-pulse}.socket to apply a headroom of 64 samples to all of your audio devices.

No sound in "Half-Life: Alyx"

The workaround is the same as for Steam/Client troubleshooting but also move libSDL2-2.0.so.0 from hl alyx:

user $mv "$HOME/.local/share/Steam/steamapps/common/Half-Life Alyx/game/bin/linuxsteamrt64/libSDL2-2.0.so.0" ~/alyx-linuxsteamrt64-libSDL2-2.0.so.0

and debugging advice is in "$HOME/.local/share/Steam/steamapps/common/Half-Life Alyx/game/hlvr.sh".

If it doesn't help you can try doing it with libSDL2-2.0.so.0 from $HOME/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/..., $HOME/.local/share/Steam/steamapps/common/SteamLinuxRuntime_soldier/... and $HOME/.local/share/Steam/ubuntu12_32/steam-runtime/pinned_libs_64/.

Also https://github.com/ValveSoftware/SteamVR-for-Linux/issues/524#issue-1292338878 or combination of it and workaround described here can help.

"Timed out waiting for response from Mongoose. Steam VR needs to be restarted" error in "Half-Life: Alyx" with valve index

Stop SteamVR. Without turning on valve index controllers, start SteamVR, start HL Alyx, wait till it loads to menu without this error. Then turn on the controllers.

Proton: Out of memory crash (e.g Hogwarts Legacy)

Some games seem to need more mapped memory than is allowed per default

Increase it by creating a new file:[15]

FILE /etc/sysctl.d/proton.conf
vm.max_map_count = 1000000

Red Dead Redemption 2 and EA App

If the Rockstar Launcher throws "Game executable path not found. Please reinstall the game.", or the EA App says it can not connect to their server, make sure the following kernel feature is enabled:

KERNEL Enable process_vm_readv/writev syscalls (CROSS_MEMORY_ATTACH)
General setup  --->
    [*] Enable process_vm_readv/writev syscalls

League of Legends and Geometry Dash (to download songs) need this feature too.

Ultrawide resolution not appearing in games running through Wine and Xwayland

If you are using an ultrawide or other non standard Monitor as well as a secondary 16:9 monitor and ultrawide resolutions are not selectable in games running on wine through Xwayland, make sure your ultrawide monitor is set as the primary monitor for Xwayland:

user $xrandr

and find your ultrawide/non standard monitor in the list, the use the ID to set it to be the primary monitor:

user $xrandr --verbose --output "Monitor-ID" --primary

This has to be ran after every login.

The game has a problem with no existing workaround after it was updated by steam

The game can be downgraded with workflow described here Steam/Client troubleshooting. AppID, DepotIDs, ChangelistIDs and paths should be replaced with proper values for this game.

References

  1. Matt Turner. Import libtxc_dxtn's S3TC code into Mesa, The mesa-dev Archives, October 2nd, 2017. Retrieved on September 6th, 2018.
  2. 2.0 2.1 Rasmus Thomsen. x11-libs/libxcb-1.12[abi_x86_32] optimizations above -O1 causing multiple applications to stop working (e.g. Civilization 5), Gentoo Bugzilla, April 23rd, 2017. Retrieved on October 14th, 2018.
  3. nativemad. media-libs/libtxc required from DiRT Showdown, Steam Overlay, January 18th, 2016. Retrieved on January 21st, 2016.
  4. mahdi1234. DRI_PRIME=1 and DiRT Showdown won't launch due to opengl 4.1, Gentoo Forums, January 17th, 2016. Retrieved on January 21st, 2016.
  5. Arkady Rost. Black texture, Dota 2 Linux and Mac client, August 14th, 2013. Retrieved on May 26th, 2015.
  6. michaelsudnick. Black ground texture on Gentoo amd64, radeonsi open source driver, Dota 2 Linux and Mac client, July 12th, 2014. Retrieved on May 26th, 2015.
  7. proatx. Red-screen and no textures, Dota 2 Linux and Mac client, December 16th, 2013. Retrieved on May 26th, 2015.
  8. ldaws011. TF2 segfault on launch, Source 1 Based Games, April 6, 2022. Retrieved on April 18, 2022.
  9. Nowaker. Linux: blank/black screen after start - windowed mode maybe?, Sid Meier's Civilization V Steam Community, June 12th, 2014. Retrieved on May 28th, 2015.
  10. jqpdev. New patch needed to fix segfaults in Civ 5 Linux client for CPUs with more than 8 logical cores, Sid Meier's Civilization V Steam Community, February 23rd, 2018. Retrieved on May 30th, 2019.
  11. Dirk Meijer. Segmentation Fault in Linux, Stealth Bastard Deluxe Steam Community, May 3rd, 2013. Retrieved on May 27th, 2015.
  12. netfab. TF2 segfaults on start, Source 1 Based Games, February 11th, 2018. Retrieved on October 26th, 2018.
  13. ambidot. Several Unity games segfault at "FMOD failed to get number of drivers" when PulseAudio isn't running, Unity Forums, November 25th, 2015. Retrieved on May 2nd, 2016.
  14. timon37. X³: TC and AP - Linux support thread, X Universe Forums, April 13th, 2013. Retrieved on May 26th, 2015.
  15. Blisto91 [1], Hogwarts Legacy Compatibility Report, February 8th, 2023. Retrieved February 20th 2023