anyc / steam-overlay

Gentoo overlay for Valve's Steam client and Steam-based games
GNU General Public License v2.0
201 stars 44 forks source link

steam fails to install because of outdated libxcb. #193

Open savefilemaster opened 7 years ago

savefilemaster commented 7 years ago

On a clean install (after steam --reset or similar), running the steam installer fails to find xcb_send_request_with_fds because steam uses an old version of libxcb, and this function has been deprecated.

This is an issue that has been reported to Valve for years now (see 1 and 2), and a push has been fixed to the beta client (see 1 and 2), but the issue still exists in the initial install and one is required to force the old dri2 library with LIBGL_DRI3_DISABLE=1 (see 1).

I am not sure whether or not this is within the scope of this project, but given that this is a long standing issue it would be nice to be notified or to patch the steam launcher to have this variable set on initial install.

  1. Valve steam-for-linux github issue 4816
  2. Valve steam-for-linux github issue 3204
  3. Arch Linux Wiki Post
anyc commented 7 years ago

Thank you for your report! Is it known with which versions of libxcb this error occurs? We could set this variable always but I don't know if this could cause issues for other users.

Tele42 commented 7 years ago

We know that the issue here is with the libxcb in the bootstrapper (/usr/lib/steam/bootstraplinux_ubuntu12_32.tar.xz) which hasn't been updated since the library was updated in the steam runtime to fix the simular issue there.

savefilemaster commented 7 years ago

I apologize for being mostly incorrect in my initial post.

Tele42 is completely right. I think this issue pops up in a first time install for everyone running DRI3 mesa and using the steam runtime. libxcb-dri3.so has xcb_send_request_with_fds as an undefined symbol that it expects to find in libxcb.so, but the libxcb.so in the bootstrapper file is old and does not have this symbol. libxcb-dri2.so does not have this symbol, so the initial steam install works fine when you force the old DRI2 library.

I don't have any other boxes to test on, but I imagine that always forcing DRI2 would not break anything, but could lower performance in some games. (Would the attached patch work?)

A hacky fix that worked for me was to run STEAM_RUNTIME=0 steam on the first run of steam to use system libxcb while steam is doing its initial extraction, and then relaunch steam.

steam-fix-bootstrapper-libxcb.patch.txt

anyc commented 7 years ago

Okay, so a message like the following would help?

The first-time installation of steam might fail due to incompatible libraries on systems
with DRI3-based drivers. As a workaround, start the steam installation either with DRI2 by
setting LIBGL_DRI3_DISABLE=1 or without the official runtime by disabling the use flag
and setting STEAM_RUNTIME=0. After the installation, you can start steam without such
a workaround.