g_pattern_spec_match_string symbol

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,

Quick note: GLib is different from glibc. Glibc is the GNU C library.

The RPM package for GLib is glib2.

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.

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.

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).

By the way, there are no glib libraries in /usr/local/lib

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.

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,

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.