protonscr

outdated xcb library in steam runtime causes KSP 1.2 prelease to hung under DRI3

steamclosed reviewed
ValveSoftware/steam-for-linux#4638 · opened 2016-09-28 by Jajcus · updated 2017-03-07 · 6 comments · github
JJajcus 2016-09-28 github

Your system information

  • Steam client version: Built Sep 20 2016 at 18:21:08, package versions: 1474415843
  • Distribution: PLD Linux
  • Opted into Steam client beta?: Yes
  • Have you checked for system updates?: Yes

Drivers:

  • Linux kernel 4.7.5
  • Mesa 12.0.3 Intel GPU driver
  • Xorg 'intel' or 'modesetting' driver (both tested), with DRI3 enabled
  • Intel Haswell and Intel Skylake CPU/GPU (both tested)

Please describe your issue in as much detail as possible:

Kerbal Space Program pre-release would freeze randomly. Freezing stops when I start it with LIBGL_DRI3_DISABLE=1 or when I remove all libxcb*.so* and libX*.so* from steam runtime, to force using current system libraries.

I would expect the game to work properly without the need for any extra options or workarounds.

I have first reported this problem to KSP developers: http://bugs.kerbalspaceprogram.com/issues/11420
When I found out LIBGL_DRI3_DISABLE helps, I have filed a Mesa bug report: https://bugs.freedesktop.org/show_bug.cgi?id=97890
Further debugging hinted an issue with libxcb and a Mesa developer suggested that the libraries provided by Steam Runtime may be quite outdated (there have been DRI3-related fixes upstream).

Steps for reproducing this issue:

  1. Have current Linux kernel and current released Mesa Intel drivers (12.0.3)
  2. Make sure the X11 driver has DRI3 enabled (should be on a modern system)
  3. Start KSP from steam, preferably the x86_64 version (the default x86 version also freezes)
  4. Play a bit until it freezes. Alt-tabbing and using UI widgets, like in the settings window or tech tree, seem to trigger the bug faster.

IMHO, in case of such system libraries, like libxcb, libstdc++, libasound, etc. Steam should override system libraries only when the system does not provide given soname at all or provides old one (often can be seen in the library file names). Forcing whole set of libraries, often causes problems, when old libraries override current ones.

Ssrakitnican 2016-10-02 github

Removing Steam's version of libxcb.so.1 also stops freezes for Viridi on recent Fedora versions with Intel and DRI3.

NNotMrFlibble 2016-11-16 github

This applies to several other games, and it's DRI3-specific only. (AMD graphics hardware here.)

If the XCB libraries must be bundled, Valve should bundle version 1.11 or backport the DRI3 fix.

Eernstp 2017-01-05 github

This also happened to me with Talos running on AMDGPU + RADV:

Thread 1 "Talos" received signal SIGINT, Interrupt.
0x00007ffff776d4d0 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
(gdb) bt
#0 0x00007ffff776d4d0 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1 0x00007ffff48a1b7f in ?? () from /home/ernst/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libxcb.so.1
#2 0x00007ffff48a347f in ?? () from /home/ernst/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libxcb.so.1
#3 0x00007ffff48a3699 in xcb_wait_for_reply ()
from /home/ernst/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libxcb.so.1
#4 0x00007ffff4f10f5d in _XReply () from /home/ernst/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libX11.so.6
#5 0x00007ffff4f06cf9 in XQueryPointer ()
from /home/ernst/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libX11.so.6
#6 0x0000000001a1d3a2 in ?? ()
#7 0x0000000001923d31 in ?? ()
#8 0x0000000001a5fc6e in ?? ()
#9 0x0000000001a4e398 in ?? ()
#10 0x0000000000924f8b in ?? ()
#11 0x00000000008f8db6 in ?? ()
#12 0x00000000008fae0f in ?? ()
#13 0x0000000001472d0a in ?? ()
#14 0x000000000191c9d2 in ?? ()
#15 0x000000000191ccb4 in ?? ()
#16 0x00007ffff6eac3f1 in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
#17 0x00000000008e671f in ?? ()

I think this could happen with Intel graphics also?

Kkisak-valve maintainer 2017-01-05 github

Per the 2017-01-05 steam beta update, does this issue still occur with the beta client?

NNotMrFlibble 2017-01-06 github

Looks fine here now.

Now all that's needed is to clean up those games which bundle these libraries by removing said libraries. Checking what I have here (and which isn't already cleaned up), I find an old libxcb in System Shock 2 which causes the game to fail to start up due to a missing symbol.

Kkisak-valve maintainer 2017-01-06 github

Thanks testing @NotMrFlibble, you should follow up with the System Shock 2 game devs for issues with game bundled libraries.

Nothing extracted yet.