ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.16k stars 173 forks source link

Overlay doesn't work with Solus #8594

Open JacekJagosz opened 2 years ago

JacekJagosz commented 2 years ago

Your system information

Please describe your issue in as much detail as possible:

This has been an issue all users of Solus have been reporting for maybe the last month? Steam overlay doesn't work in any game, unless you add the LD_PRELOAD as mentioned below. It seems Steam is trying to load 32 bit library for 64 bit games, and the 64 bit library for 32 bit games, and fails. I still don't understand why the LD_PRELOAD fixes it.

Steps for reproducing this issue:

  1. Launch Steam on Solus, doesn't matter if with Linux-Steam-Integration OFF or ON
  2. Launch any game
  3. Overlay doesn't work. On terminal you can see:
    Game process added : AppID 602960 "mangohud /home/jacek/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=602960 -- '/home/jacek/.local/share/Steam/steamapps/common/Barotrauma/./Barotrauma'", ProcID 13271, IP 0.0.0.0:0
    chdir /home/jacek/.local/share/Steam/steamapps/common/Barotrauma
    GameAction [AppID 602960, ActionID 1] : LaunchApp changed task to WaitingGameWindow with ""
    GameAction [AppID 602960, ActionID 1] : LaunchApp changed task to Completed with ""
    ERROR: ld.so: object '/home/jacek/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
    ERROR: ld.so: object '/home/jacek/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
    ERROR: ld.so: object '/home/jacek/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
    ERROR: ld.so: object '/home/jacek/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
    ERROR: ld.so: object '/home/jacek/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
    [S_API] SteamAPI_Init(): Loaded '/home/jacek/.local/share/Steam/linux64/steamclient.so' OK.
    Game process updated : AppID 602960 "mangohud /home/jacek/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=602960 -- '/home/jacek/.local/share/Steam/steamapps/common/Barotrauma/./Barotrauma'", ProcID 13274, IP 0.0.0.0:0
    Setting breakpad minidump AppID = 602960
    SteamInternal_SetMinidumpSteamID:  Caching Steam ID:  76561198171000189 [API loaded no]

    Temporary fix pointing to nature of the issue

    If you add LD_PRELOAD=$HOME/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so:$HOME/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so %command% the overlay now works in all games.

kisak-valve commented 2 years ago

Hello @JacekJagosz, Steam LD_PRELOADs both the 32 bit and 64 bit variants of the Steam Overlay, like the LD_PRELOAD you've mentioned as a workaround. One is expected to silently work while the other harmlessly fails. That issue is being tracked at #6718 and is a red herring.

It sounds like there's something else with Solus's Steam packaging that is putting something into LD_PRELOAD which is interfering with the Steam overlay. With no workarounds or mangohud, please start a game, then inspect the LD_PRELOAD environment variable of the running game. One way to do this is to use htop, select the game and press e. Then compare how it looks with your workaround. My guess is that manually specifying LD_PRELOAD is just moving it to the start of the variable.

This issue should also be mentioned to your package maintainer for Steam.

Possibly another symptom of https://github.com/ValveSoftware/steam-runtime/issues/510.

DanceMore commented 1 year ago

I think I hit a similar issue to this on Debian Unstable today.

ERROR: ld.so: object '/home/user/.steam/debian-installation/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.

Some kind of issue with 32-bit Steam Overlay running? is Linux 6.x killing 32bit support or something, I think I heard something about ending support for i468 processors, but I assumed 32bit will never truly die because of compatibility running random ancient software than cannot be updated.

Disabling Steam Overlay for the impacted game (original Dark Forces) restored functionality. for now...