Bug#995453: libucm.so: needs to link with -lucs
Paul Wise
pabs at debian.org
Fri Oct 1 13:40:57 BST 2021
Package: libucx0
Version: 1.11.2~rc1-2
Severity: minor
User: debian-qa at lists.debian.org
Usertags: undefined-symbol adequate
File: /usr/lib/x86_64-linux-gnu/libucm.so.0.0.0
libucm.so needs to link with -lucs, see the output of adequate, symtree
and objdump below. I detected this on amd64 but the Debian build log
scanner also detected dpkg-buildpackage complaining about it on other
architectures, see the w3m/getbuildlog output below.
I filed this bug at severity minor since I'm not sure if there are any
programs using the libucm.so lib and if they already use the libucs.so
symbols and link with the -lucs flag or not.
This bug report brought to you by adequate:
https://bonedaddy.net/pabs3/log/2013/02/23/inadequate-software/
$ lib=/usr/lib/x86_64-linux-gnu/libucm.so.0.0.0
$ link=/usr/lib/x86_64-linux-gnu/libucs.so.0.0.0
$ pkg="$(dpkg-query --search "$lib" | sed s/:.*//)"
$ src="$(grep-aptavail --no-field-names --show-field Source:Package --field Package --exact-match --pattern "$pkg" | sed 's/ .*//')"
$ first="$(printf '%s' "$src" | head --bytes 1)"
$ adequate "$pkg" | grep -F "$lib"
libucx0:amd64: undefined-symbol /usr/lib/x86_64-linux-gnu/libucm.so.0.0.0 => ucs_load_modules
$ man adequate | grep -A4 undefined-symbol
undefined-symbol
The symbol has not been found in the libraries linked with the binary.
Either the binary either needs to be linked with an additional shared library,
or the dependency on the shared library package that provides this symbol is too weak.
References: Debian Policy §3.5, §8.6, §10.2.
$ lddtree "$lib"
libucm.so.0.0.0 => /usr/lib/x86_64-linux-gnu/libucm.so.0.0.0 (interpreter => none)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
ld-linux-x86-64.so.2 => /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
$ symtree "$lib"
/usr/lib/x86_64-linux-gnu/libucm.so.0.0.0
libdl.so.2 => dlinfo,dlsym,dladdr,dlopen,dlerror
libpthread.so.0 => pthread_mutex_lock,pthread_rwlock_rdlock,close,pthread_spin_destroy,pthread_mutex_unlock,pthread_spin_init,pthread_spin_unlock,pthread_rwlock_wrlock,read,pthread_rwlock_unlock,write,pthread_spin_lock,lseek,open,__errno_location
libc.so.6 => shmget,strncmp,__free_hook,strrchr,shmat,__isoc99_sscanf,dl_iterate_phdr,strncpy,time,__stack_chk_fail,shmctl,pthread_mutex_lock,shmdt,realloc,abort,getpid,sbrk,strtol,mmap,sched_yield,strlen,brk,memset,strstr,__errno_location,read,__fprintf_chk,pthread_mutex_unlock,putenv,__curbrk,__malloc_hook,lseek,memcpy,memcpy,mprotect,__vsnprintf_chk,malloc,malloc_usable_size,__ctype_b_loc,getenv,stderr,munmap,gethostbyname,__snprintf_chk,getlogin,mremap,malloc_trim,__realloc_hook,gethostname,gettimeofday,madvise,close,open,strerror_r,strchr,__getpagesize,__cxa_finalize,syscall,__sprintf_chk,__xstat,pthread_self,strcmp,strerror,write,sysconf,__memalign_hook,free
WEAK => _ITM_deregisterTMCloneTable,__gmon_start__,_ITM_registerTMCloneTable
UNRESOLVED => ucs_load_modules
$ objdump -T "$link" | grep -E " ($(symtree "$lib" | sed -n 's/ UNRESOLVED => //p' | tr , '|'))$"
000000000002c170 g DF .text 0000000000000439 Base ucs_load_modules
$ w3m -dump https://qa.debian.org/bls/packages/"$first"/"$src".html | grep -A2 symbol
• W shlibs-symbol-not-found (amd64, arm64, ppc64el)
Found 1 issues.
$ w3m -dump https://qa.debian.org/bls/bytag/W-shlibs-symbol-not-found.html | grep -A12 description
description
The build logs contains a line like
dpkg-shlibdeps: warning: symbol NAME used by BINARY found in none of the libraries.
Possible reasons:
• A library not linked with a library needed.
While this can sometimes make sense in order to allow the using binary to
decide which of multiple available implementations to use, it means that
dependency information might be incorrect, optimisations like prelinking
might fail and stuff like that.
$ chronic getbuildlog "$src" last
$ grep 'dpkg-shlibdeps: warning: symbol .* used by .* found in none of the libraries' ./*.log
./ucx_1.11.2~rc1-2_amd64.log:dpkg-shlibdeps: warning: symbol ucs_load_modules used by debian/libucx0/usr/lib/x86_64-linux-gnu/libucm.so.0.0.0 found in none of the libraries
./ucx_1.11.2~rc1-2_arm64.log:dpkg-shlibdeps: warning: symbol ucs_load_modules used by debian/libucx0/usr/lib/aarch64-linux-gnu/libucm.so.0.0.0 found in none of the libraries
./ucx_1.11.2~rc1-2_ppc64el.log:dpkg-shlibdeps: warning: symbol ucs_load_modules used by debian/libucx0/usr/lib/powerpc64le-linux-gnu/libucm.so.0.0.0 found in none of the libraries
-- System Information:
Debian Release: bookworm/sid
APT prefers testing-debug
APT policy: (900, 'testing-debug'), (900, 'testing'), (800, 'unstable-debug'), (800, 'unstable'), (790, 'buildd-unstable'), (700, 'experimental-debug'), (700, 'experimental'), (690, 'buildd-experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 5.14.0-1-amd64 (SMP w/8 CPU threads)
Locale: LANG=en_AU.utf8, LC_CTYPE=en_AU.utf8 (charmap=UTF-8), LANGUAGE=en_AU:en
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages libucx0:amd64 depends on:
ii ibverbs-providers 36.0-1
ii libc6 2.32-4
ii libibverbs1 36.0-1
ii libnuma1 2.0.14-3
ii librdmacm1 36.0-1
libucx0:amd64 recommends no packages.
libucx0:amd64 suggests no packages.
-- no debconf information
--
bye,
pabs
https://wiki.debian.org/PaulWise
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://alioth-lists.debian.net/pipermail/debian-science-maintainers/attachments/20211001/ced739b1/attachment.sig>
More information about the debian-science-maintainers
mailing list