protonscr

Missing `libffi.so.7` prevents launch

steamclosed Distro Family: Arch
ValveSoftware/steam-for-linux#8245 · opened 2021-11-20 by toydotgame · updated 2021-11-21 · 4 comments · github
Ttoydotgame 2021-11-20 github

System Information

  • Steam client version: 1.0.0.73-1
  • Distribution: Arch (Kernel 5.15.2-arch1-1)
  • Opted into Steam client beta?: No
  • Have you checked for system updates?: Yes

Description

Opening Steam fails due to a missing libffi.so.7. I have installed libffi and lib32-libffi from the Arch Repositories, to no avail. I tried the solution that I saw a lot on the internet, which was to install libffi7 from the AUR - but that also didn't work. (I also tried downgrading libffi by downloading and manually installing an older version (3.4.2-3) from the archive - also didn't work) Behaviour is the same if ~/.local/share/Steam/ and/or ~/.steam/ is removed.

Steps for reproducing this issue:

Via DE
  1. Open Steam by the desktop shortcut from install (which runs /usr/bin/steam-runtime %U)
  2. image
    Pressing OK allows me to continue, but all I get next is an error from Steam like this:
    image
Via the Terminal
  1. Run steam.
  2. steam.sh[10693]: Error: You are missing the following 32-bit libraries, and Steam may not run:
    libffi.so.7
    
    This also brings the same error message box as from earlier. Pressing OK on that gives you the same error box from Steam, too. The log says:
    Failed to load steamui.so - dlerror(): libffi.so.7: cannot open shared object file: No such file or directory
    

Full Log

Kkisak-valve maintainer 2021-11-20 github

Hello @toydotgame, can you open a terminal and run something like

cd ~/.local/share/Steam/ubuntu12_32/
LD_LIBRARY_PATH="." ./steam-runtime/run.sh lddtree steamui.so

This should output a library dependency tree. What I'd like to know is which libraries are calling for libffi.so.7 and where are they located.

Ttoydotgame 2021-11-21 github

The line for libffi doesn't have a path in it.

libffi.so.7 => None

Full output:

steamui.so (interpreter => None)
    libdl.so.2 => /usr/lib32/libdl.so.2
    libstdc++.so.6 => /usr/lib32/libstdc++.so.6
        libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1
    libpthread.so.0 => /usr/lib32/libpthread.so.0
    librt.so.1 => /usr/lib32/librt.so.1
    ld-linux.so.2 => /usr/lib32/ld-linux.so.2
    libtier0_s.so => /home/user/.local/share/Steam/ubuntu12_32/libtier0_s.so
    libvstdlib_s.so => /home/user/.local/share/Steam/ubuntu12_32/libvstdlib_s.so
    libv8.so => /home/user/.local/share/Steam/ubuntu12_32/libv8.so
        libicui18n.so => /home/user/.local/share/Steam/ubuntu12_32/libicui18n.so
        libicuuc.so => /home/user/.local/share/Steam/ubuntu12_32/libicuuc.so
    libavcodec.so.58 => /home/user/.local/share/Steam/ubuntu12_32/libavcodec.so.58
        libvpx.so.6 => /home/user/.local/share/Steam/ubuntu12_32/libvpx.so.6
    libavutil.so.56 => /home/user/.local/share/Steam/ubuntu12_32/libavutil.so.56
        libva-drm.so.2 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libva-drm.so.2
        libva-x11.so.2 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libva-x11.so.2
        libvdpau.so.1 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libvdpau.so.1
        libdrm.so.2 => /usr/lib32/libdrm.so.2
    libvideo.so => /home/user/.local/share/Steam/ubuntu12_32/libvideo.so
        libavformat.so.58 => /home/user/.local/share/Steam/ubuntu12_32/libavformat.so.58
            libbz2.so.1.0 => /usr/lib32/libbz2.so.1.0
            libz.so.1 => /usr/lib32/libz.so.1
        libavresample.so.4 => /home/user/.local/share/Steam/ubuntu12_32/libavresample.so.4
        libswscale.so.5 => /home/user/.local/share/Steam/ubuntu12_32/libswscale.so.5
    libSDL2-2.0.so.0 => /home/user/.local/share/Steam/ubuntu12_32/libSDL2-2.0.so.0
    libXtst.so.6 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libXtst.so.6
    libXfixes.so.3 => /usr/lib32/libXfixes.so.3
    libXrandr.so.2 => /usr/lib32/libXrandr.so.2
    libXrender.so.1 => /usr/lib32/libXrender.so.1
    libXext.so.6 => /usr/lib32/libXext.so.6
    libX11.so.6 => /usr/lib32/libX11.so.6
        libxcb.so.1 => /usr/lib32/libxcb.so.1
            libXau.so.6 => /usr/lib32/libXau.so.6
            libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6
    libXi.so.6 => /usr/lib32/libXi.so.6
    libGL.so.1 => /usr/lib32/libGL.so.1
        libGLdispatch.so.0 => /usr/lib32/libGLdispatch.so.0
        libGLX.so.0 => /usr/lib32/libGLX.so.0
    libgobject-2.0.so.0 => /usr/lib32/libgobject-2.0.so.0
        libffi.so.7 => None
    libglib-2.0.so.0 => /usr/lib32/libglib-2.0.so.0
        libpcre.so.1 => /usr/lib32/libpcre.so.1
    libgio-2.0.so.0 => /usr/lib32/libgio-2.0.so.0
        libgmodule-2.0.so.0 => /usr/lib32/libgmodule-2.0.so.0
        libmount.so.1 => /usr/lib32/libmount.so.1
            libblkid.so.1 => /usr/lib32/libblkid.so.1
        libresolv.so.2 => /usr/lib32/libresolv.so.2
    libgtk-x11-2.0.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
        libgdk-x11-2.0.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0
            libXinerama.so.1 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libXinerama.so.1
            libXcursor.so.1 => /usr/lib32/libXcursor.so.1
            libXcomposite.so.1 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libXcomposite.so.1
            libXdamage.so.1 => /usr/lib32/libXdamage.so.1
        libpangocairo-1.0.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libpangocairo-1.0.so.0
            libfreetype.so.6 => /usr/lib32/libfreetype.so.6
                libpng16.so.16 => /usr/lib32/libpng16.so.16
                libharfbuzz.so.0 => /usr/lib32/libharfbuzz.so.0
                libfreetype.so.6 => !!! circular loop !!!
                libbrotlidec.so.1 => /usr/lib32/libbrotlidec.so.1
                    libbrotlicommon.so.1 => /usr/lib32/libbrotlicommon.so.1
        libatk-1.0.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libatk-1.0.so.0
        libcairo.so.2 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libcairo.so.2
            libpixman-1.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libpixman-1.so.0
            libpng12.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/lib/i386-linux-gnu/libpng12.so.0
            libxcb-shm.so.0 => /usr/lib32/libxcb-shm.so.0
            libxcb-render.so.0 => /usr/lib32/libxcb-render.so.0
        libpangoft2-1.0.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libpangoft2-1.0.so.0
        libpango-1.0.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libpango-1.0.so.0
        libfontconfig.so.1 => /usr/lib32/libfontconfig.so.1
            libexpat.so.1 => /usr/lib32/libexpat.so.1
    libpipewire-0.3.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libpipewire-0.3.so.0
    libpulse.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libpulse.so.0
        libjson.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libjson.so.0
        libpulsecommon-1.1.so => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libpulsecommon-1.1.so
            libwrap.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/lib/i386-linux-gnu/libwrap.so.0
                libnsl.so.1 => /usr/lib32/libnsl.so.1
            libsndfile.so.1 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libsndfile.so.1
                libFLAC.so.8 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libFLAC.so.8
                    libogg.so.0 => /home/user/.local/share/Steam/ubuntu12_32/libogg.so.0
                libvorbisenc.so.2 => /home/user/.local/share/Steam/ubuntu12_32/libvorbisenc.so.2
                    libvorbis.so.0 => /home/user/.local/share/Steam/ubuntu12_32/libvorbis.so.0
            libasyncns.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libasyncns.so.0
        libdbus-1.so.3 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/pinned_libs_32/libdbus-1.so.3
    libva.so.2 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libva.so.2
    libgdk_pixbuf-2.0.so.0 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0
        libtiff.so.4 => /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/libtiff.so.4
        libjpeg.so.8 => /usr/lib32/libjpeg.so.8
    libm.so.6 => /usr/lib32/libm.so.6
    libc.so.6 => /usr/lib32/libc.so.6
Kkisak-valve maintainer 2021-11-21 github

Thanks, it's the line above libffi that matters: libgobject-2.0.so.0 => /usr/lib32/libgobject-2.0.so.0, which tells us that the system package lib32-glib2 is causing you this problem, not Steam. Report this issue to your distro's package maintainer for that package.

Ttoydotgame 2021-11-21 github

I went to check the version of lib32-glib2 and when I tried reinstalling with Pacman and it turns out that lib32-glib2 was being provided by the AUR package lib32-glib2-git.

Overwriting the AUR package and instead using the multilib version to provide that dependency seems to have fixed that problem. Running LD_LIBRARY_PATH="." ./run.sh lddtree steamui.so shows me that there is now a path associated with libffi.

libffi.so.8 => /usr/lib32/libffi.so.8

Launching Steam either way now works perfectly. Thank you for your time and for pointing this out. :)

Nothing extracted yet.