ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.22k stars 174 forks source link

Libnss does not get pinned if too old for libcef. #5311

Open ArthurGibbs opened 6 years ago

ArthurGibbs commented 6 years ago

Your system information

Distributor ID: Ubuntu Description: Ubuntu 14.04.4 LTS Release: 14.04 Codename: trusty

Please describe your issue in as much detail as possible:

Store and many other pages in client are black.

console output

arthur@arthur-Z97M-D3H:~$ steam rm: cannot remove ‘/home/arthur/.steam/steam’: Is a directory rm: cannot remove ‘/home/arthur/.steam/bin’: Is a directory Running Steam on ubuntu 14.04 64-bit STEAM_RUNTIME is enabled automatically Pins up-to-date! [2017-12-22 14:09:14] Startup - updater built Dec 15 2017 11:47:44 Installing breakpad exception handler for appid(steam)/version(1513371133) Looks like steam didn't shutdown cleanly, scheduling immediate update check Installing breakpad exception handler for appid(steam)/version(1513371133) [2017-12-22 14:09:15] Checking for update on startup [2017-12-22 14:09:15] Checking for available updates... Installing breakpad exception handler for appid(steam)/version(1513371133) [2017-12-22 14:09:16] Download skipped: /client/steam_client_ubuntu12 version 1513371133, installed version 1513371133 [2017-12-22 14:09:16] Nothing to do [2017-12-22 14:09:16] Verifying installation... [2017-12-22 14:09:16] Performing checksum verification of executable files [2017-12-22 14:09:16] Verification complete Gtk-Message: Failed to load module "overlay-scrollbar" Gtk-Message: Failed to load module "unity-gtk-module"

(steam:7341): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-button-images after class was initialised Installing breakpad exception handler for appid(steam)/version(1513371133) [1222/140916.749156:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. /home/arthur/.steam/ubuntu12_64/steamwebhelper.sh: line 5: 7349 Aborted (core dumped) ./steamwebhelper "$@" Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) process 7393: arguments to dbus_type_is_basic() were incorrect, assertion "dbus_type_is_valid (typecode) || typecode == DBUS_TYPE_INVALID" failed in file ../../dbus/dbus-signature.c line 322. This is normally a bug in some application using the D-Bus library. type unknown isn't supported yet in dbus_message_append_args_valist Generating new string page texture 3: 128x256, total string texture memory is 131.07 KB Generating new string page texture 4: 256x256, total string texture memory is 393.22 KB Generating new string page texture 5: 384x256, total string texture memory is 786.43 KB process 7395: arguments to dbus_message_new_method_call() were incorrect, assertion "path != NULL" failed in file ../../dbus/dbus-message.c line 1201. This is normally a bug in some application using the D-Bus library. Local Device Found type: 0079 0006 path: sdl://0 serial_number: Manufacturer: Product: DragonRise Inc. Generic USB Joystick Release: 110 Interface: -1

!! Steam controller device opened for index 0. Steam Controller reserving XInput slot 0 Controller 0 connected, configuring it now... Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Could not create Vulkan instance : ERROR_EXTENSION_NOT_PRESENT !! Controller 0 attributes: Type: 30 ProductID: 6 Serial: Awaiting_Logon Capabilities: 00000003 Firmware Version: 0 Firmware Build Time: 2147483647 (Tue, 19 Jan 2038 03:14:07 GMT) Bootloader Build Time: 2147483647 (Tue, 19 Jan 2038 03:14:07 GMT) Setting VR Path Registry runtime path to /home/arthur/.steam/steam/SteamApps/common/SteamVR vr/vrmanager.cpp (193) : Assertion Failed: BFileExists( /home/arthur/.steam/steam/SteamApps/common/SteamVR/bin/linux64/vrpathreg ) failed Assert( Assertion Failed: BFileExists( /home/arthur/.steam/steam/SteamApps/common/SteamVR/bin/linux64/vrpathreg ) failed ):vr/vrmanager.cpp:193

Installing breakpad exception handler for appid(steam)/version(1513371133) crash_20171222140919_20.dmp[7407]: Uploading dump (out-of-process) /tmp/dumps/crash_20171222140919_20.dmp Setting VR Path Registry config path to /home/arthur/.steam/steam/config vr/vrmanager.cpp (193) : Assertion Failed: BFileExists( /home/arthur/.steam/steam/SteamApps/common/SteamVR/bin/linux64/vrpathreg ) failed Setting VR Path Registry log path to /home/arthur/.steam/steam/logs vr/vrmanager.cpp (193) : Assertion Failed: BFileExists( /home/arthur/.steam/steam/SteamApps/common/SteamVR/bin/linux64/vrpathreg ) failed Loaded Config for Local Override Path for App ID 413080: /home/arthur/.steam//controller_base/empty.vdf Controller 0 mapping uses xinput : false Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) crash_20171222140919_20.dmp[7407]: Finished uploading minidump (out-of-process): success = yes crash_20171222140919_20.dmp[7407]: response: CrashID=bp-c76a642c-fb4e-4385-a658-55c942171222 crash_20171222140919_20.dmp[7407]: file ''/tmp/dumps/crash_20171222140919_20.dmp'', upload yes: ''CrashID=bp-c76a642c-fb4e-4385-a658-55c942171222'' [1222/140926.933003:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. /home/arthur/.steam/ubuntu12_64/steamwebhelper.sh: line 5: 7418 Aborted (core dumped) ./steamwebhelper "$@" [1222/140937.036994:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. /home/arthur/.steam/ubuntu12_64/steamwebhelper.sh: line 5: 7453 Aborted (core dumped) ./steamwebhelper "$@" [1222/140947.193432:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. IPC: recovering abandoned mutex 0xeeac1018 /home/arthur/.steam/ubuntu12_64/steamwebhelper.sh: line 5: 7486 Aborted (core dumped) ./steamwebhelper "$@" [1222/140957.347774:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. /home/arthur/.steam/ubuntu12_64/steamwebhelper.sh: line 5: 7519 Aborted (core dumped) ./steamwebhelper "$@" [1222/141007.493108:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. IPC: recovering abandoned mutex 0xeeac1018 /home/arthur/.steam/ubuntu12_64/steamwebhelper.sh: line 5: 7554 Aborted (core dumped) ./steamwebhelper "$@" Forced create but already created for SharedObjectEvent [1222/141017.649729:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. /home/arthur/.steam/ubuntu12_64/steamwebhelper.sh: line 5: 7592 Aborted (core dumped) ./steamwebhelper "$@" [1222/141027.742169:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. /home/arthur/.steam/ubuntu12_64/steamwebhelper.sh: line 5: 7627 Aborted (core dumped) ./steamwebhelper "$@" [1222/141037.907412:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. /home/arthur/.steam/ubuntu12_64/steamwebhelper.sh: line 5: 7661 Aborted (core dumped) ./steamwebhelper "$@" Opted-in Controller Mask: 0 BYieldingRegisterSteamController - server unavailible checking local cache for stored valuesGenerating new string page texture 6: 48x256, total string texture memory is 835.58 KB roaming config store loaded successfully - 1950 bytes. migrating temporary roaming config store

(steam:7341): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-can-change-accels after class was initialised

(steam:7341): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-menu-popup-delay after class was initialised

(steam:7341): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-menu-popdown-delay after class was initialised

(steam:7341): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-label-select-on-focus after class was initialised

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

(steam:7341): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent. Unable to read VR Path Registry from /home/arthur/.config/openvr/openvrpaths.vrpath process 7341: arguments to dbus_message_new_method_call() were incorrect, assertion "path != NULL" failed in file ../../dbus/dbus-message.c line 1201. This is normally a bug in some application using the D-Bus library. ExecCommandLine: "'/home/arthur/.steam/ubuntu12_32/steam'" System startup time: 86.54 seconds !! Controller 0 attributes: Type: 30 ProductID: 6 Serial: Awaiting_Logon Capabilities: 00000003 Firmware Version: 0 Firmware Build Time: 2147483647 (Tue, 19 Jan 2038 03:14:07 GMT) Bootloader Build Time: 2147483647 (Tue, 19 Jan 2038 03:14:07 GMT) Installing breakpad exception handler for appid(steam)/version(1513371133) Generating new string page texture 75: 1024x256, total string texture memory is 1.88 MB Generating new string page texture 76: 128x256, total string texture memory is 131.07 KB Generating new string page texture 77: 64x256, total string texture memory is 1.95 MB Generating new string page texture 78: 32x256, total string texture memory is 1.98 MB Opted-in Controller Mask: 0 Installing breakpad exception handler for appid(steam)/version(1513371133) Installing breakpad exception handler for appid(steam)/version(1513371133) Generating new string page texture 92: 128x256, total string texture memory is 2.11 MB Generating new string page texture 93: 128x256, total string texture memory is 2.24 MB Generating new string page texture 94: 256x256, total string texture memory is 2.51 MB Generating new string page texture 107: 24x256, total string texture memory is 2.53 MB [1222/141048.105706:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. /home/arthur/.steam/ubuntu12_64/steamwebhelper.sh: line 5: 7705 Aborted (core dumped) ./steamwebhelper "$@" [1222/141058.220876:FATAL:nss_util.cc(632)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. Forced create but already created for SharedObjectEvent /home/arthur/.steam/ubuntu12_64/steamwebhelper.sh: line 5: 7739 Aborted (core dumped) ./steamwebhelper "$@"

Steps for reproducing this issue:

  1. Open steam go to store page
kisak-valve commented 6 years ago

Hello @ArthurGibbs, there's a decent chance steam is not pinning a steam runtime library because your system does not have realpath installed. Please sudo apt install realpath and retest.

ArthurGibbs commented 6 years ago

realpath is already the newest version.

kisak-valve commented 6 years ago

I read NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required. Please upgrade to the latest NSS, and if you still get this error, contact your distribution maintainer. in the log as the key detail in this issue report. Steam should be pinning the steam runtime variant if it's newer than the system variant and we need to figure out why something older than libnss3-3.26.2 from the steam runtime is being used.

Please list the contents of ~/.steam/ubuntu12_32/steam-runtime/pinned_libs_64. After that, then close steam, and move or remove the ~/.steam/ubuntu12_32/steam-runtime/pinned_libs_* folders and restart steam to regenerate these folders.

johndrinkwater commented 6 years ago

Seeing this issue locally on 15.10, have removed and recreated pinnedlibs*/ and made sure realpath is installed. The libs pinned are: https://gist.github.com/johndrinkwater/bfbdea56e5b3730cd00809c9503c3cfc

johndrinkwater commented 6 years ago

Confirmed that symlinking libnss3+util from the runtime into the pinned location resolves it.

lrwxrwxrwx 1 john  95 2018-01-03 23:58 pinned_libs_32/libnss3.so -> /home/john/settings/data/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libnss3.so
lrwxrwxrwx 1 john  99 2018-01-04 00:01 pinned_libs_32/libnssutil3.so -> /home/john/settings/data/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libnssutil3.so
lrwxrwxrwx 1 john  98 2018-01-03 23:59 pinned_libs_64/libnss3.so -> /home/john/settings/data/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libnss3.so
lrwxrwxrwx 1 john 102 2018-01-04 00:01 pinned_libs_64/libnssutil3.so -> /home/john/settings/data/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libnssutil3.so

It seems the pin_newer_runtime_libs function in steam.sh launch script seems to ignore libnss because of the file naming pattern they use.

h1z1 commented 6 years ago

Curious, did you pin both libdbus and libnss or just libnss? You have two errors from above.

ArthurGibbs commented 6 years ago

Workaround for anyone reading this looking for a solution:

sudo apt-get install --reinstall libnss3

johndrinkwater commented 6 years ago

https://github.com/ValveSoftware/steam-for-linux/issues/5311#issuecomment-355162907 is still true as of the latest beta.

smcv commented 4 years ago

process 7393: arguments to dbus_type_is_basic() were incorrect, assertion "dbus_type_is_valid (typecode) || typecode == DBUS_TYPE_INVALID" failed in file ../../dbus/dbus-signature.c line 322.

This was a bug in a version of libSDL2 that used to be bundled with the Steam client (and various games), and is not directly relevant to NSS.

smcv commented 4 years ago

It seems the pin_newer_runtime_libs function in steam.sh launch script seems to ignore libnss because of the file naming pattern they use.

In newer Steam Runtime versions this moved to steam-runtime/run.sh, but essentially the same issue still exists. It works well with libraries that follow the usual pattern where the SONAME (libfoo.so.0 here) is a symlink to a regular file with a versioned filename:

lrwxrwxrwx libfoo.so.0 -> libfoo.so.0.1.2
-r--r--r-- libfoo.so.0.1.2

but if libfoo.so.0 is a regular file (either inside the Steam Runtime or on the host system), then run.sh cannot know which one is newer. It falls back to assuming the version on the host system is probably newer.

For CEF/steamwebhelper, there is the additional headache that those components are compiled against a mini-Steam-Runtime codenamed heavy, which is based on Debian 8 (somewhat newer than the main Steam Runtime scout, which is based on Ubuntu 12.04). This does not have the full run.sh machinery and the full recursive dependencies of CEF/steamwebhelper; instead, a minimal selection of libraries that has been determined to be sufficient by experiment are bundled alongside steamwebhelper in ubuntu12_64/steam-runtime-heavy/.

We could improve on this situation by taking libnss3.so and related packages (and, in general, more of the dependencies of CEF) from the heavy mini-Steam-Runtime, and bundling them in ubuntu12_64/steam-runtime-heavy/, where they would be used in preference to either the version from the host system or the version from the main scout Steam Runtime.

aidalgol commented 4 years ago

For CEF/steamwebhelper, there is the additional headache that those components are compiled against a mini-Steam-Runtime codenamed heavy, which is based on Debian 8 (somewhat newer than the main Steam Runtime scout, which is based on Ubuntu 12.04). This does not have the full run.sh machinery and the full recursive dependencies of CEF/steamwebhelper; instead, a minimal selection of libraries that has been determined to be sufficient by experiment are bundled alongside steamwebhelper in ubuntu12_64/steam-runtime-heavy/.

Why are the Steam runtimes based on EOL'd distros?

smcv commented 4 years ago

Why are the Steam runtimes based on EOL'd distros?

tl;dr: because the alternative would be that Steam only works on the latest distros, and games randomly stop working.

Every library in the Steam Runtime needs to have been compiled against a version of glibc that is at least as old as the oldest glibc that will be installed on Steam users' systems. It can't bundle its own copy of glibc, because /lib/ld-linux.so.2 and /lib64/ld-linux-x86-64.so.2 need to be provided by the host system (their paths are hard-coded in every Linux x86 executable), and they need to be the same version as libdl.so.2, which in turn needs to be the same version as libc.so.6. You'll see from the original issue report that people were using Steam on Ubuntu 14.04 as recently as 2 years ago, more than a year after it had been replaced as the current LTS release by Ubuntu 16.04.

Historically, the Steam client was meant to support Ubuntu 12.04, so the runtime had to be based on Ubuntu 12.04 or older. Recent versions of CEF are no longer compatible with a library stack that old, so the current baseline is Debian 8 or Ubuntu 16.04 (hence 'heavy', which is Debian-8-based).

Upgrading libraries in the Steam Runtime requires backporting them onto a toolchain and library stack from the distant past, and tends to break games' assumptions. Shifting games onto a newer runtime like 'heavy' is also not a reliable thing to do, because they are entitled to depend on any library from the Steam Runtime they were compiled against, and some of those libraries have had incompatible ABI changes since then (either a graceful SONAME break with the old version no longer available, or a problematic ABI break with no SONAME change), or have been discontinued since then.

As a result, Steam Runtime 1 'scout' will probably never be upgraded (other than maybe a few targeted backports), but the intention is that it will eventually be replaced for new games by a newer runtime environment (with old games continuing to run under scout unless/until they can be demonstrated to work reliably under the newer environment).

Ericson2314 commented 3 years ago

Steam should try being Nixpkgs/NixOS based, where we set the ELF interpreter so we aren't bound by what /lib/ld-linux.so.2 etc. provided by the system are.