steam-runtime icon indicating copy to clipboard operation
steam-runtime copied to clipboard

steam-runtime-heavy's glib giving 'undefined symbol: "pcre_free"'

Open jason-oliveira opened this issue 6 years ago • 10 comments

Hi. Running Gentoo here (specifically, CloverOS), and having steam refuse to load steamwebhelper. running steam -vvv gives me this interesting error repeatedly: steamwebhelper symbol lookup error: ./steam-runtime-heavy/libglib-2.0.so.0: undefined symbol: "pcre_free"

The effect of this error is that every page on steam that uses steamwebhelper displays a black rectangle over that content, and it cannot be interacted with. Interestingly, it seems the download manager does not use steamwebhelper, so it alone displays content. setup menus and Big Picture mode work as normal.

Even more interestingly, if I go into the steam-runtime-heavy subdir and delete the libglib-2.0.so.0 after logging in, but before the application displays, it forces steam to use my native libglib-2.0.so.0 which works fine.

This doesn't seem to be happening on a Calculate Linux (also based on Gentoo) machine behind me, so I'm pretty positive this might be a local issue. What I'm really looking for is an explanation of why libglib is having this complaint.

jason-oliveira avatar Nov 14 '19 19:11 jason-oliveira

What I see if I don't delete libglib-2.0.so.0 while the app starts: image823 Screenshot_20191114_135121 this repeats constantly while steam -vvv is running

jason-oliveira avatar Nov 14 '19 19:11 jason-oliveira

Hello, Can you provide the output of the Help > System Information dialog box to help diagnostics? (also make sure you do that from the latest Steam beta)

Thank you

TTimo avatar Nov 14 '19 20:11 TTimo

System Information

Computer Information:
    Manufacturer:  Unknown
    Model:  Unknown
    Form Factor: Desktop
    No Touch Input Detected

Processor Information:
    CPU Vendor:  AuthenticAMD
    CPU Brand:  AMD Ryzen 5 2400G with Radeon Vega Graphics    
    CPU Family:  0x17
    CPU Model:  0x11
    CPU Stepping:  0x0
    CPU Type:  0x0
    Speed:  3600 Mhz
    8 logical processors
    4 physical processors
    HyperThreading:  Supported
    FCMOV:  Supported
    SSE2:  Supported
    SSE3:  Supported
    SSSE3:  Supported
    SSE4a:  Supported
    SSE41:  Supported
    SSE42:  Supported
    AES:  Supported
    AVX:  Supported
    AVX2:  Unsupported
    AVX512F:  Unsupported
    AVX512PF:  Unsupported
    AVX512ER:  Unsupported
    AVX512CD:  Unsupported
    AVX512VNNI:  Unsupported
    SHA:  Unsupported
    CMPXCHG16B:  Supported
    LAHF/SAHF:  Supported
    PrefetchW:  Unsupported

Operating System Version:
    "Gentoo Base System release 2.6" (64 bit)
    Kernel Name:  Linux
    Kernel Version:  5.2.20-gentoo
    X Server Vendor:  The X.Org Foundation
    X Server Release:  12005000
    X Window Manager:  KWin
    Steam Runtime Version:  steam-runtime_0.20191007.0

Video Card:
    Driver:  X.Org AMD RAVEN (DRM 3.32.0, 5.2.20-gentoo, LLVM 8.0.1)
    Driver Version:  4.5 (Compatibility Profile) Mesa 20.0.0-devel (git-538d2c33b8)
    OpenGL Version: 4.5
    Desktop Color Depth: 24 bits per pixel
    Monitor Refresh Rate: 60 Hz
    VendorID:  0x1002
    DeviceID:  0x15dd
    Revision Not Detected
    Number of Monitors:  1
    Number of Logical Video Cards:  1
    Primary Display Resolution:  1920 x 1080
    Desktop Resolution: 1920 x 1080
    Primary Display Size: 18.03" x 10.16" (20.67" diag)
                                            45.8cm x 25.8cm (52.5cm diag)
    Primary VRAM: 2048 MB

Sound card:
    Audio device: Loopback Mixer

Memory:
    RAM:  5970 Mb

Miscellaneous:
    UI Language:  English
    LANG:  en_CA.UTF-8
    Total Hard Disk Space Available:  1876760 Mb
    Largest Free Hard Disk Block:  200499 Mb
    VR Headset: None detected

Steam Linux Runtime Information:
{
  "can-write-uinput" : true,
  "steam-installation" : {
    "path" : "/home/shroom/.local/share/Steam",
    "data_path" : "/home/shroom/.local/share/Steam",
    "issues" : [
    ]
  },
  "runtime" : {
    "path" : "/home/shroom/.local/share/Steam/ubuntu12_32/steam-runtime",
    "version" : "0.20191007.0",
    "issues" : [
    ]
  },
  "os-release" : {
    "id" : "gentoo",
    "name" : "Gentoo",
    "pretty_name" : "Gentoo/Linux"
  },
  "architectures" : {
    "i386-linux-gnu" : {
      "can-run" : true,
      "library-issues-summary" : [
      ],
      "graphics-details" : {
        "x11/vulkan" : {
          "messages" : "ERROR: [Loader Message] Code 0 : /usr/lib64/libvulkan_radeon.so: wrong ELF class: ELFCLASS64\n",
          "renderer" : "AMD RADV RAVEN (LLVM 8.0.1)",
          "version" : "1.1.107 (device 1002:15dd) (driver 19.99.99)"
        },
        "glx/gl" : {
          "renderer" : "AMD RAVEN (DRM 3.32.0, 5.2.20-gentoo, LLVM 8.0.1)",
          "version" : "4.5 (Compatibility Profile) Mesa 20.0.0-devel (git-538d2c33b8)"
        },
        "egl_x11/gl" : {
          "renderer" : "AMD RAVEN (DRM 3.32.0, 5.2.20-gentoo, LLVM 8.0.1)",
          "version" : "4.5 (Compatibility Profile) Mesa 20.0.0-devel (git-538d2c33b8)"
        },
        "egl_x11/glesv2" : {
          "renderer" : "AMD RAVEN (DRM 3.32.0, 5.2.20-gentoo, LLVM 8.0.1)",
          "version" : "OpenGL ES 3.2 Mesa 20.0.0-devel (git-538d2c33b8)"
        }
      }
    },
    "x86_64-linux-gnu" : {
      "can-run" : true,
      "library-issues-summary" : [
        "cannot-load"
      ],
      "library-details" : {
        "libpcreposix.so.3" : {
          "messages" : "Unable to find the library: /home/shroom/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/x86_64-linux-gnu/libpcreposix.so.3: undefined symbol: pcre_free\n",
          "path" : null,
          "issues" : [
            "cannot-load"
          ]
        }
      },
      "graphics-details" : {
        "x11/vulkan" : {
          "messages" : "ERROR: [Loader Message] Code 0 : /usr/lib/libvulkan_radeon.so: wrong ELF class: ELFCLASS32\n",
          "renderer" : "AMD RADV RAVEN (LLVM 8.0.1)",
          "version" : "1.1.107 (device 1002:15dd) (driver 19.99.99)"
        },
        "glx/gl" : {
          "renderer" : "AMD RAVEN (DRM 3.32.0, 5.2.20-gentoo, LLVM 8.0.1)",
          "version" : "4.5 (Compatibility Profile) Mesa 20.0.0-devel (git-538d2c33b8)"
        },
        "egl_x11/gl" : {
          "renderer" : "AMD RAVEN (DRM 3.32.0, 5.2.20-gentoo, LLVM 8.0.1)",
          "version" : "4.5 (Compatibility Profile) Mesa 20.0.0-devel (git-538d2c33b8)"
        },
        "egl_x11/glesv2" : {
          "renderer" : "AMD RAVEN (DRM 3.32.0, 5.2.20-gentoo, LLVM 8.0.1)",
          "version" : "OpenGL ES 3.2 Mesa 20.0.0-devel (git-538d2c33b8)"
        }
      }
    }
  },
  "locale-issues" : [
  ],
  "locales" : {
    "<default>" : {
      "resulting-name" : "en_CA.UTF-8",
      "charset" : "UTF-8",
      "is_utf8" : true
    },
    "C" : {
      "resulting-name" : "C",
      "charset" : "ANSI_X3.4-1968",
      "is_utf8" : false
    },
    "C.UTF-8" : {
      "resulting-name" : "C.UTF-8",
      "charset" : "UTF-8",
      "is_utf8" : true
    },
    "en_US.UTF-8" : {
      "resulting-name" : "en_US.UTF-8",
      "charset" : "UTF-8",
      "is_utf8" : true
    }
  },
  "egl" : {
    "icds" : [
    ]
  },
  "vulkan" : {
    "icds" : [
      {
        "json_path" : "/usr/share/vulkan/icd.d/radeon_icd.i686.json",
        "library_path" : "/usr/lib/libvulkan_radeon.so",
        "api_version" : "1.1.107"
      },
      {
        "json_path" : "/usr/share/vulkan/icd.d/radeon_icd.x86_64.json",
        "library_path" : "/usr/lib64/libvulkan_radeon.so",
        "api_version" : "1.1.107"
      }
    ]
  }
}

The Steam Linux Runtime container tool is not installed.

jason-oliveira avatar Nov 14 '19 20:11 jason-oliveira

dev-libs/libpcre-debian should provide libpcreposix.so.3 in , which is most likely on one of the systems, but not the other.

kisak-valve avatar Nov 14 '19 20:11 kisak-valve

      "library-details" : {
        "libpcreposix.so.3" : {
          "messages" : "Unable to find the library: /home/shroom/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/x86_64-linux-gnu/libpcreposix.so.3: undefined symbol: pcre_free\n",

This means one of the libraries that libpcreposix.so.3 depends on (presumably libpcre.so.3?) appears to be newer on the (Gentoo) host system than in the Steam Runtime, but the "newer" version does not have the pcre_free symbol that it was expected to have.

steam-runtime-system-info doesn't yet have support for inspecting libraries at the level of individual symbols to determine whether they're compatible with its expectations.

Using a host system copy of GLib works around this; as a wild guess, I imagine this is most likely to be because the host system GLib was compiled with its own bundled copy of PCRE instead of a system copy, so it doesn't use libpcre.so.3. The ordinary scout Steam Runtime used for games uses a newer host system GLib automatically if present, but the 'heavy' mini-runtime used for steamwebhelper does not have that mechanism and will always use its own bundled libraries.

(GLib uses libpcre.so.3 and not libpcreposix.so.3 - the diagnostic tool is merely reporting that libpcreposix.so.3 has the same problem that the heavy runtime's GLib does.)

smcv avatar Nov 14 '19 21:11 smcv

@kisak-valve unfortunately, building dev-libs/libpcre-debian (and using both 32 and 64 bit abi) had no effect on anything. the Calculate machine does not have this app installed, because Gentoo traditionally keeps it masked unstable.

@smcv it seems that libpcreposix.so.3 is coming from version 1 of the library, and I'm not finding libpcre.so.3 (that you said glib used) in /.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/x86_64-linux-gnu/. only libpcreposix.so.3. This leads me to believe that steam-runtime-heavy's libglib-2.0.so.0 is actually referencing the libpcreposix.so.3 in that directory. In addition, I'm not sure anything is built statically into my native glib, as both libpcre and libpcre2 are both installed.

jason-oliveira avatar Nov 14 '19 21:11 jason-oliveira

@jason-oliveira, can you check if there is a difference in the useflags for dev-libs/libpcre between the working and symptomatic system?

kisak-valve avatar Nov 14 '19 22:11 kisak-valve

and I'm not finding libpcre.so.3 (that you said glib used) in /.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/x86_64-linux-gnu/. only libpcreposix.so.3

I think libpcre.so.3 is meant to be in lib, not usr/lib. The Steam Runtime doesn't have merged-/usr yet.

libpcre and libpcre2 are both installed

What SONAMEs (lib*.so.*) do they provide? For example on my Debian system, PCRE 2 provides libpcre2-8.so.0, libpcre2-16.so.0 and libpcre2-32.so.0, while the older PCRE v1 provides libpcre.so.3, libpcre16.so.3 and libpcre32.so.3. I think the Steam Runtime only has PCRE v1.

In addition, I'm not sure anything is built statically into my native glib

objdump -Tx /path/to/your/libglib-2.0.so.0 | grep NEEDED would tell you. In the "Dynamic Section", you'll see "NEEDED libc.so.6", and perhaps a similar NEEDED line for libpcre.so.something. In the Steam Runtime's copy it's libpcre.so.3 but yours might be different.

If there is no NEEDED entry for libpcre, then your GLib must be using its own private copy of PCRE v1.

smcv avatar Nov 14 '19 23:11 smcv

@kisak-valve from the (broken) CloverOS system:

[I] dev-libs/libpcre
     Installed versions:  8.42(3){tbz2}(03:43:30 PM 2019-11-14)(bzip2 cxx jit pcre16 pcre32 readline recursion-limit split-usr unicode zlib -libedit -static-libs ABI_MIPS="-n32 -n64 -o32" ABI_RISCV="-lp64 -lp64d" ABI_S390="-32 -64" ABI_X86="32 64 -x32")

From the working Calculate Linux system:

[I] dev-libs/libpcre
     Installed versions:  8.42(3){tbz2}(02:29:49 AM 07/19/2019)(bzip2 cxx jit pcre16 pcre32 readline recursion-limit split-usr unicode zlib -libedit -static-libs ABI_MIPS="-n32 -n64 -o32" ABI_RISCV="-lp64 -lp64d" ABI_S390="-32 -64" ABI_X86="32 64 -x32")

(they're identical)

@smcv

What SONAMEs (lib*.so.*) do they provide?

in /usr/lib on the CloverOS machine, I have

libpcre16.so          libpcre2-32.so        libpcre2-posix.so        libpcrecpp.so          libpcreposix.so.3
libpcre16.so.0        libpcre2-32.so.0      libpcre2-posix.so.2      libpcrecpp.so.0        libpcre.so
libpcre16.so.0.2.10   libpcre2-32.so.0.8.0  libpcre2-posix.so.2.0.2  libpcrecpp.so.0.0.1    libpcre.so.1
libpcre2-16.so        libpcre2-8.so         libpcre32.so             libpcreposix.so        libpcre.so.1.2.10
libpcre2-16.so.0      libpcre2-8.so.0       libpcre32.so.0           libpcreposix.so.0      libpcre.so.3
libpcre2-16.so.0.8.0  libpcre2-8.so.0.8.0   libpcre32.so.0.0.10      libpcreposix.so.0.0.6

That came from dev-libs/libpcre, dev-libs/libpcre2, and dev-libs/libpcre-debian

If there is no NEEDED entry for libpcre

`--> objdump -Tx /usr/lib/libglib-2.0.so.0 | grep NEEDED
  NEEDED               libpcre.so.1
  NEEDED               libgcc_s.so.1
  NEEDED               libpthread.so.0
  NEEDED               libc.so.6

jason-oliveira avatar Nov 15 '19 04:11 jason-oliveira

Not exactly a fix, but I was able to work around this problem by moving ubuntu12_64/steam-runtime-heavy/libglib-2.0.so.0 aside and symlinking my system's own version in its place. Worked immediately; didn't even have to restart Steam. Though I imagine this is likely to get blown away by the next client update.

metafarion avatar Mar 05 '20 01:03 metafarion