steam-runtime-heavy's glib giving 'undefined symbol: "pcre_free"'
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.
What I see if I don't delete libglib-2.0.so.0 while the app starts:
this repeats constantly while steam -vvv is running
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
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.
dev-libs/libpcre-debian should provide libpcreposix.so.3 in , which is most likely on one of the systems, but not the other.
"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.)
@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, can you check if there is a difference in the useflags for dev-libs/libpcre between the working and symptomatic system?
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.
@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
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.