protonscr

Steam client don't launch with undefined symbol: wl_proxy_marshal_flags when run from Alacritty Snap packaging

steamclosed runtimeDistro Family: UbuntuDistro-provided steam package
ValveSoftware/steam-for-linux#9195 · opened 2023-02-12 by fixgoats · updated 2023-02-16 · 14 comments · github
Ffixgoats 2023-02-12 github

Your system information

  • Steam client version (build number or date): 1.0.0.74
  • Distribution (e.g. Ubuntu): Ubuntu 22.10
  • Opted into Steam client beta?: No
  • Have you checked for system updates?: Yes

Please describe your issue in as much detail as possible:

I tried installing Steam through apt. When I ran it on a terminal a new window did open but otherwise nothing, and this was the terminal log:

steam.sh[11617]: Running Steam on ubuntu 22.10 64-bit
steam.sh[11617]: STEAM_RUNTIME is enabled automatically
setup.sh[11685]: Updating Steam runtime environment...
/usr/bin/zenity: symbol lookup error: /lib/x86_64-linux-gnu/libWPEBackend-fdo-1.0.so.1: undefined symbol: wl_proxy_marshal_flags
steam.sh[11617]: Steam client's requirements are satisfied
[2023-02-12 02:32:11] Startup - updater built Feb 10 2023 02:37:25
[2023-02-12 02:32:11] Startup - Steam Client launched with: '/home/fixgoats/.steam/debian-installation/ubuntu12_32/steam' '-nominidumps' '-nobreakpad'
[2023-02-12 02:32:11] Loading cached metrics from disk (/home/fixgoats/.steam/debian-installation/package/steam_client_metrics.bin)
[2023-02-12 02:32:11] Failed to load cached hosts file (File 'update_hosts_cached.vdf' not found), using defaults
[2023-02-12 02:32:11] Using the following download hosts for Public, Realm steamglobal
[2023-02-12 02:32:11] 1. http://media.steampowered.com, /client/, Realm 'steamglobal', weight was 1, source = 'baked in'
[2023-02-12 02:32:11] Verifying installation...
[2023-02-12 02:32:11] Verification complete
Loaded SDL version 3.0.0-765-gc4db0725e
Gtk-Message: 02:32:11.325: Failed to load module "gail"
Gtk-Message: 02:32:11.325: Failed to load module "atk-bridge"
XRRGetOutputInfo Workaround: initialized with override: 0 real: 0xf38649c0
XRRGetCrtcInfo Workaround: initialized with override: 0 real: 0xf38631f0

(steam:11753): Gtk-WARNING **: 02:32:11.338: Unable to locate theme engine in module_path: "adwaita",
/usr/share/themes/Yaru-dark/gtk-2.0/main.rc:775: error: unexpected identifier 'direction', expected character '}'

(steam:11753): Gtk-WARNING **: 02:32:11.339: Unable to locate theme engine in module_path: "adwaita",
/usr/share/themes/Yaru-dark/gtk-2.0/hacks.rc:28: error: invalid string constant "normal_entry", expected valid string constant
GetWin32Stats: display was not open yet, good
steamwebhelper.sh[11759]: Runtime for steamwebhelper: defaulting to /home/fixgoats/.steam/debian-installation/ubuntu12_64/steam-runtime-heavy
steamwebhelper.sh[11759]: glibc >= 2.34, partially disabling sandbox until CEF supports clone3()
Could not connect to X session manager: None of the authentication protocols specified are supported
CAppInfoCacheReadFromDiskThread took 0 milliseconds to initialize
Warning: failed to set thread priority: set failed for 8: -1: setpriority() failed
Warning: failed to set thread priority: set failed for priority 8
Warning: support for elevated priorities is most likely unavailable, suppressing future warnings
Warning: failed to set thread priority: set failed for 8: -1: setpriority() failed
/home/fixgoats/.steam/debian-installation/ubuntu12_32/../ubuntu12_64/gldriverquery: symbol lookup error: /lib/x86_64-linux-gnu/libdecor-0.so.0: undefined symbol: wl_proxy_marshal_flags
Warning: failed to set thread priority: set failed for 8: -1: setpriority() failed
Could not connect to X session manager: None of the authentication protocols specified are supported
Could not connect to X session manager: None of the authentication protocols specified are supported
Could not connect to X session manager: None of the authentication protocols specified are supported
Could not connect to X session manager: None of the authentication protocols specified are supported
Failed to init SteamVR because it isn't installed
steamwebhelper.sh[11841]: Runtime for steamwebhelper: defaulting to /home/fixgoats/.steam/debian-installation/ubuntu12_64/steam-runtime-heavy
steamwebhelper.sh[11841]: glibc >= 2.34, partially disabling sandbox until CEF supports clone3()

I also tried installing steam-installer through snap store and the same thing happened. Personally I managed to solve this by getting the .deb file from the Steam homepage, but I would expect the package manager's package to work.

I also tried using the early access snap, and that managed to launch Steam, but when I tried to launch Europa Universalis IV the game just failed to launch. But then that's a different issue.

Steps for reproducing this issue:

  1. Install Ubuntu 22.10 on computer
  2. Install Steam through apt
  3. Try to launch Steam
Kkisak-valve maintainer 2023-02-12 github

Hello @fixgoats, glad to hear you found a working configuration. At first glance, this doesn't really make any sense unless the Valve-provided Steam package pulled in additional dependencies. Would you happen to recall if it did?

Please copy your system information from Steam (Steam -> Help -> System Information) and put it in a gist, then include a link to the gist in this issue report. This is a bit of a blind guess, but I suspect that you're an AMD graphics user, and have used an AMDGPU-Pro driver installer intended for an LTS release of Ubuntu, and that installer has put libraries into /opt that are too old for other dependencies on your system.

Since the distro-modified Steam package is affected, and the Valve provided Steam package is not, then this issue should be reported to your distro's package maintainers for their Steam package.

Kkisak-valve maintainer 2023-02-12 github

Looking at this from another perspective, it looks like wl_proxy_marshal_flags is provided by libwayland-client 1.20.0 and newer. Ubuntu 20.04 and newer should provide it in the libwayland-client0 system package. The question here is why are there system dependencies that need this outside of Steam, but it wasn't being provided as part of a normal package dependency tree.

Does libwayland-client.so.0 exist anywhere in an irregular location and what package put it there?

Ffixgoats 2023-02-12 github

libwayland-client.so.0 was installed here: /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.21.0 Here's a gist with the system information. What's also strange is that I'm not even using Wayland. I also have errors where it can't connect to the X session manager. Both apt and the .deb package pulled in a heap of dependencies and I don't know if the .deb package pulled in any that apt didn't.

RRyuzakiKK 2023-02-13 github

Is the gist from the official Steam .deb or is it the one from the apt?

One interesting part there is that vulkan seems to be broken in the host system for both i386 and x86_64:

      "graphics-details" : {
        "x11/vulkan" : {
          "messages" : [
            "timeout: the monitored command dumped core"
          ],
          "renderer" : null,
          "version" : null,
          "issues" : [
            "cannot-load",
            "cannot-draw"
          ],
          "exit-status" : -1,
          "terminating-signal" : 11,
          "terminating-signal-name" : "Segmentation fault",
          "devices" : [
          ]
        },

Additionally, as @kisak-valve mentioned, the symbol wl_proxy_marshal_flags should indeed be provided by the libwayland-client.so.0.21.0 shipped in Ubuntu 22.10.
You can test it with:

$ objdump -T -x /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.21.0 | grep wl_proxy_marshal_flags

If the above command successfully highlights that the symbol is available, this could probably mean that at runtime a different libwayland-client.so.0 might be loaded.

Ssmcv 2023-02-13 github

Both apt and the .deb package pulled in a heap of dependencies and I don't know if the .deb package pulled in any that apt didn't

You should be able to find out in /var/log/apt.

Ffixgoats 2023-02-13 github

I checked /var/log/apt and I think these are the relevant entries, where package-install would be the Valve provided .deb. Running
objdump -T -x /usr/lib/x86_64-linux-gnu/libwayland-client.so.0.21.0 | grep wl_proxy_marshal_flags gives 0000000000009d30 g DF .text 0000000000000119 Base wl_proxy_marshal_flags

RRyuzakiKK 2023-02-15 github

@fixgoats can you please run echo $LD_LIBRARY_PATH and then strings -n5 /etc/ld.so.cache | grep libwayland-client and post their output?

This should give us a hint at what is going wrong with the dynamic linker.

Ffixgoats 2023-02-15 github

echo $LD_LIBRARY_PATH outputs

/snap/alacritty/65/usr/lib/x86_64-linux-gnu:/snap/alacritty/65/lib/x86_64-linux-gnu:/snap/alacritty/65/usr/lib/x86_64-linux-gnu/dri

strings -n5 /etc/ld.so.cache | grep libwayland-client outputs

/lib/i386-linux-gnu/libwayland-client.so.0
/lib/x86_64-linux-gnu/libwayland-client.so.0
Ssmcv 2023-02-15 github

Are you running Steam from an Alacritty terminal that you installed as a Snap app?

Do any of the directories starting with /snap/alacritty/65/ listed in $LD_LIBRARY_PATH contain a libwayland-client.so.0?

Ffixgoats 2023-02-15 github

Yes, I was running it from Alacritty which was installed as a Snap app. There's a libwayland-client.so.0 in /snap/alacritty/65/usr/lib/x86_64-linux-gnu/

Ssmcv 2023-02-15 github

It sounds as though running Steam from that version of Alacritty results in Steam being given an older version of libwayland-client.so.0 than the one from the operating system, but also seeing a newer version of libdecor (among others) which requires a newer version of libwayland-client.so.0 than the one provided by the Alacritty Snap app.

Sorry, that can't work, and sounds like a bug (or design flaw) in how Alacritty was packaged as a Snap app.

Ssmcv 2023-02-15 github

How much of this issue (if any) remains reproducible if you run Steam in an ordinary non-Snap context, for example from the operating system's gnome-terminal?

Ffixgoats 2023-02-15 github

Works fine with gnome-terminal. Also, when I tried to remove the .deb steam package with Ubuntu Software, which I used to install it, it didn't do anything. I had to use apt remove steam-launcher.

Ssmcv 2023-02-16 github

Works fine with gnome-terminal.

Then this is a bug in the Snap packaging of Alacritty rather than a bug in Steam: the Snap-packaged Alacritty is running third-party software like Steam in an environment where it can't necessarily be expected to work. In effect, it's downgrading libwayland-client for all programs that are run inside that terminal.

@kisak-valve, I think this should be closed as "not our bug".

What's also strange is that I'm not even using Wayland

The way Linux shared libraries work means that you need all of the library dependencies to be present and at suitable versions, even if they are not in active use. In this case, Steam picks up an indirect dependency on libwayland-client via higher-level libraries like SDL, which have support for native Wayland (even if you're not using that right now).

Also, when I tried to remove the .deb steam package with Ubuntu Software, which I used to install it, it didn't do anything. I had to use apt remove steam-launcher.

It's provided as steam.deb for historical reasons, but the internal name that the packaging system knows it by is steam-launcher. The name needed to change during its migration from 32-bit to 64-bit, otherwise it wouldn't have been upgraded correctly.

Nothing extracted yet.