I’m trying to launch the Linux-native Shadow of the Tomb Raider, but sadly it always errors out with a seg fault (“Game crashed with signal SIGSEGV(11): Segmentation fault.”) and a binary log dump of some kind that I can’t read.
Launching it manually using steam-run ./ShadowOfTheTombRaider
in the correct directory (~/.local/share/Steam/steamapps/common/Shadow of the Tomb Raider/bin
) leads to the same error, but at least by setting LD_DEBUG=libs
I can see some output from libraries that it tries to load:
8897: /steamrt/amd64/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0: error: symbol lookup error: undefined symbol: udev_device_get_action (fatal)
8897: /steamrt/amd64/usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0: error: symbol lookup error: undefined symbol: _udev_device_get_action (fatal)
That matches with a reply I got from the publisher when I sent them some of the dump files:
Both crash logs pointed towards something with udev_device, but there is nothing further than that to give us a clue.
Since I wanted to try and replicate this in an environment I can manipulate, I copied the lutris package definition from here and loaded it as a package ((pkgs.callPackage ./override/lutris.nix {})
– no idea if that’s correct).
Still didn’t work. So I made a simple shell.nix
describing a FHS User Env in the aforementioned directory and started adding dependencies until it worked (initial Common and xorgDeps sets copied from lutris because I’m lazy):
{ pkgs ? import <nixpkgs> {} }:
let
xorgDeps = pkgs: with pkgs.xorg; [
libX11 libXrender libXrandr libxcb libXmu libpthreadstubs libXext libXdmcp
libXxf86vm libXinerama libSM libXv libXaw libXi libXcursor libXcomposite
];
in (pkgs.buildFHSUserEnv {
name = "ubuntu-like";
targetPkgs = pkgs: (with pkgs; [
# for feral
fontconfig openal nss nspr expat
steam
]);
multiPkgs = pkgs: with pkgs; [
# Common
libsndfile libtheora libogg libvorbis libopus libGLU libpcap libpulseaudio
libao libusb libevdev udev libgcrypt libxml2 libusb libpng libmpeg2 libv4l
libjpeg libxkbcommon libass libcdio libjack2 libsamplerate libzip libmad libaio
libcap libtiff libva libgphoto2 libxslt libtxc_dxtn libsndfile giflib zlib glib
alsaLib zziplib bash dbus keyutils zip cabextract freetype unzip coreutils
readline gcc SDL SDL2 curl graphite2 gtk2 gtk3 udev ncurses wayland libglvnd
vulkan-loader xdg_utils sqlite gnutls libbsd
] ++ xorgDeps pkgs;
runScript = "bash";
}).env
Running ./ShadowOfTheTombRaider
in a nix-shell
now work (assumes Steam in also running)! The only different is nspr
.
Now comes the funny bit: If I add nspr
to my custom lutris package, I continue to get the same segfault. So I assume it wasn’t that after all, even though it seems to be required.
What I am doing wrong? Is there another/better way to add more libraries to the lutris FHS?