Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
setup.sh: Special-case libudev.so.0.0.9999 as newer than our libudev.…
…so.0 Steam Runtime 1 'scout' is based on a library stack from 2012, so it includes libudev.so.0 v175, from before libudev was merged into systemd and bumped its SONAME to libudev.so.1. libudev.so.0 and libudev.so.1 mostly export the same symbols, and the symbols in libudev.so.0 don't use ELF symbol versioning, so if we load both libudev.so.0 and libudev.so.1 into the same process, libudev.so.0 will "win". This can cause crashes if another module of the same process calls functions that are unique to libudev.so.1, by sharing data structures between libraries that were never intended to share them. There is a libudev0-shim project, originating in Arch Linux and now offered by several other distributions such as Debian, which provides a drop-in replacement for the legacy libudev.so.0. Unfortunately, the legacy libudev.so.0 is versioned as .so.0.13.0, while Arch's shim is currently versioned as .so.0.0.9999 (archlinux/libudev0-shim#4), so we would normally assume our legacy version is actually newer. If we special-case Arch's shim to be considered to be newer than the Steam Runtime's legacy version, then we'll load the shim version whenever it's available at OS level, avoiding crashes. Part-of: steamrt/tasks#313 Helps: ValveSoftware/steam-for-linux#9805 Signed-off-by: Simon McVittie <smcv@collabora.com>
- Loading branch information