wadudmiah
(Wadud Miah)
February 2, 2022, 2:47pm
1
Hi,
I am seeing this error with an application:
/usr/libexec/dcvviewer/dcvviewer: symbol lookup error: /usr/lib64/libgstreamer-1.0.so.0: undefined symbol: g_pattern_spec_match_string
I have glibc-devel-2.34 package. Does anyone know which RPM has this symbol? Strangely, all the shared libraries are resolved:
# ldd /usr/lib64/libgstreamer-1.0.so.0
linux-vdso.so.1 (0x00007ffef9dbd000)
libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007ffa94548000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007ffa9440d000)
libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007ffa94406000)
libm.so.6 => /lib64/libm.so.6 (0x00007ffa9432a000)
libunwind.so.8 => /lib64/libunwind.so.8 (0x00007ffa94310000)
libdw.so.1 => /lib64/libdw.so.1 (0x00007ffa9427a000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffa9406e000)
libffi.so.6 => /lib64/libffi.so.6 (0x00007ffa94063000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007ffa93feb000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffa9470a000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffa93fd0000)
libelf.so.1 => /lib64/libelf.so.1 (0x00007ffa93fb5000)
libz.so.1 => /lib64/libz.so.1 (0x00007ffa93f9b000)
libzstd.so.1 => /lib64/libzstd.so.1 (0x00007ffa93eea000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007ffa93ebe000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007ffa93eab000)
Thanks,
ebassi
(Emmanuele Bassi)
February 2, 2022, 2:50pm
2
Quick note: GLib is different from glibc. Glibc is the GNU C library.
The RPM package for GLib is glib2.
wadudmiah
(Wadud Miah)
February 2, 2022, 2:56pm
3
Hi,
Thanks for the reply. I have the glib2 RPM installed:
$ rpm -qa | grep glib2
pulseaudio-libs-glib2-15.0-2.fc35.x86_64
glib2-2.70.3-1.fc35.x86_64
glib2-devel-2.70.3-1.fc35.x86_64
It looks like that symbol (g_pattern_spec_match_string) was removed from glib2.
ebassi
(Emmanuele Bassi)
February 2, 2022, 3:10pm
4
The g_pattern_spec_match_string()
was introduced in GLib 2.70, so it was definitely not removed.
It seems you have some library compiled against GLib 2.70, but trying to link against an older version of GLib. Check if you have some library under /usr/local/lib
.
wadudmiah
(Wadud Miah)
February 2, 2022, 3:25pm
5
Hi,
looking at the output of ldd (see full output above), it is definitely liking against glib2 2.70:
$ ldd /usr/lib64/libgstreamer-1.0.so.0
linux-vdso.so.1 (0x00007fff91da2000)
libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007f3a7b67c000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f3a7b541000)
libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007
[ … ]
$ rpm -qf /lib64/libglib-2.0.so.0
glib2-2.70.3-1.fc35.x86_64
I can’t list the symbols (using nm) because they have all been stripped (using the strip command, presumably).
wadudmiah
(Wadud Miah)
February 2, 2022, 3:27pm
6
By the way, there are no glib libraries in /usr/local/lib
wadudmiah
(Wadud Miah)
February 2, 2022, 3:36pm
7
Actually, you are correct. The symbol is indeed there:
$ objdump -T /lib64/libglib-2.0.so.0 | grep g_pattern_spec_match_string
0000000000065ac0 g DF .text 0000000000000084 Base g_pattern_spec_match_string
$ readelf -Ws /lib64/libglib-2.0.so.0 | grep g_pattern_spec_match_string
409: 0000000000065ac0 132 FUNC GLOBAL DEFAULT 13 g_pattern_spec_match_string
For some reason, the linker is failing to find it. Very strange indeed.
wadudmiah
(Wadud Miah)
February 2, 2022, 3:52pm
8
wadudmiah:
/lib64/libglib-2.0.so.0
By the way, I’ve managed to fix this issue by pre-loading the glib library:
LD_PRELOAD=/lib64/libglib-2.0.so.0 /usr/bin/dcvviewer
It looks like it is looking for the symbol in the wrong library.
Regards,
system
(system)
Closed
February 16, 2022, 3:53pm
9
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.