My knee-jerk reaction is to recommend you try to LD_PRELOAD libxcb so that it already has the system version loaded up when it goes looking for libxcb.
Right now I'm running with a few missing libraries extracted from the runtime, but the runtime disabled as a whole, which works well enough.
What exactly is the purpose of the runtime? Does libxcb really need to be in it, given it's universally installed when X is available?
The purpose of the runtime is to normalize the system libraries of ubuntu and to ensure that a basic set is always available for the games to use. It effectively makes Ubuntu 12.04, 12.10, and 13.04 all act as the same version. libxcb may be universally installed, but can we ensure that the 32bit varient of libxcb is on all 64 bit ubuntu systems? (I only refer to ubuntu because that is the only distro officially supported)
what about adding proper depency handling for major libs via packagekit?
Per the 2017-01-05 steam beta update, does this issue still occur with the beta client?
Seems it's fine now, but I did not retest if it still crashes with the non-beta client. Thanks.
Thanks for retesting @heftig. Closing as fixed.
Nothing extracted yet.
Arch Linux x86_64
Mesa libGL with DRI3 support loads libxcb-dri3, which isn't in the runtime, so it's taken from the system.
libxcb-dri3 needs the symbol xcb_send_fd, which is in the system libxcb, but not in the runtime one. Hence the symbol cannot be found and the linker fails.