Package: libhavege1
Version: 1.9.4-2
Severity: minor
File: /usr/lib/x86_64-linux-gnu/libhavege.so.1.1.0
User: [email protected]
Usertags: undefined-symbol adequate

libhavege.so depends on the error_exit symbol but that is only present
in the daemon. It seems like the error_exit symbol needs to be renamed
to havege_error_exit to be less generic and then moved from the daemon
to the library. 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 most architectures, see the
w3m/getbuildlog output below.

I filed this bug at severity minor since there are no packages outside
of src:haveged that depend on libhavege1 so this issue doesn't affect
anything in Debian yet.

While investigating this issue I also noticed some very generically
named symbols in libhavege.so that really need to be renamed.

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/libhavege.so.1.1.0
$ link=/usr/sbin/haveged
$ pkg="$(dpkg-query --search "$lib" | sed s/:.*//)"
$ src="$(grep-aptavail --no-field-names --show-field Source:Package --field 
Package --exact-match --pattern "$pkg")"
$ first="$(printf '%s' "$src" | head --bytes 1)"

$ adequate "$pkg"
libhavege1:amd64: undefined-symbol /usr/lib/x86_64-linux-gnu/libhavege.so.1.1.0 
=> error_exit

$ 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"
libhavege.so.1.1.0 => /usr/lib/x86_64-linux-gnu/libhavege.so.1.1.0 (interpreter 
=> none)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
        ld-linux-x86-64.so.2 => /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2

$ symtree "$lib"
/usr/lib/x86_64-linux-gnu/libhavege.so.1.1.0
    libc.so.6 => 
chroot,socket,readdir,execv,fopen,strncmp,connect,closedir,__stack_chk_fail,listen,strtok,strtol,fgets,calloc,strlen,send,__errno_location,bind,chdir,memcmp,getsockopt,__fprintf_chk,recv,memcpy,memcpy,fclose,setsockopt,malloc,opendir,sscanf,optarg,stderr,ioctl,__snprintf_chk,close,strchr,qsort,__cxa_finalize,strcmp,free
    WEAK => _ITM_deregisterTMCloneTable,__gmon_start__,_ITM_registerTMCloneTable
    UNRESOLVED => error_exit

$ objdump -T "$link" | grep -E "($(symtree "$lib" | sed -n 's/    UNRESOLVED => 
//p' | tr , '|'))$"
0000000000003af0 g    DF .text  00000000000001de  Base        error_exit

$ w3m -dump https://qa.debian.org/bls/packages/"$first"/"$src".html | grep -A2 
symbol
  • W shlibs-symbol-not-found (alpha, amd64, arm64, armel, armhf, hppa, i386,
    ia64, m68k, mips, mips64el, mipsel, powerpc, ppc64, ppc64el, riscv64, s390x
    , sh4, sparc64, x32)

$ w3m -dump https://qa.debian.org/bls/bytag/W-shlibs-symbol-not-found.html | 
grep -A12 description
description

The build logs contains a like 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
./haveged_1.9.4-2_alpha.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/alpha-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_alpha.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/alpha-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_amd64.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/x86_64-linux-gnu/libhavege.so.1.1.0 found in none 
of the libraries
./haveged_1.9.4-2_amd64.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/x86_64-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_arm64.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/aarch64-linux-gnu/libhavege.so.1.1.0 found in none 
of the libraries
./haveged_1.9.4-2_arm64.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/aarch64-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_armel.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/arm-linux-gnueabi/libhavege.so.1.1.0 found in none 
of the libraries
./haveged_1.9.4-2_armel.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/arm-linux-gnueabi/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_armhf.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/arm-linux-gnueabihf/libhavege.so.1.1.0 found in 
none of the libraries
./haveged_1.9.4-2_armhf.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/arm-linux-gnueabihf/libhavege.so.1.1.0 found in none 
of the libraries
./haveged_1.9.4-2_hppa.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/hppa-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_hppa.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/hppa-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_i386.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/i386-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_i386.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/i386-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_ia64.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/ia64-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_ia64.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/ia64-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_m68k.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/m68k-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_m68k.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/m68k-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_mips64el.log:dpkg-shlibdeps: warning: symbol error_exit used 
by debian/haveged-udeb/usr/lib/mips64el-linux-gnuabi64/libhavege.so.1.1.0 found 
in none of the libraries
./haveged_1.9.4-2_mips64el.log:dpkg-shlibdeps: warning: symbol error_exit used 
by debian/libhavege1/usr/lib/mips64el-linux-gnuabi64/libhavege.so.1.1.0 found 
in none of the libraries
./haveged_1.9.4-2_mipsel.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/mipsel-linux-gnu/libhavege.so.1.1.0 found in none 
of the libraries
./haveged_1.9.4-2_mipsel.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/mipsel-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_mips.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/mips-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_mips.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/mips-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_powerpc.log:dpkg-shlibdeps: warning: symbol error_exit used 
by debian/haveged-udeb/usr/lib/powerpc-linux-gnu/libhavege.so.1.1.0 found in 
none of the libraries
./haveged_1.9.4-2_powerpc.log:dpkg-shlibdeps: warning: symbol error_exit used 
by debian/libhavege1/usr/lib/powerpc-linux-gnu/libhavege.so.1.1.0 found in none 
of the libraries
./haveged_1.9.4-2_ppc64el.log:dpkg-shlibdeps: warning: symbol error_exit used 
by debian/haveged-udeb/usr/lib/powerpc64le-linux-gnu/libhavege.so.1.1.0 found 
in none of the libraries
./haveged_1.9.4-2_ppc64el.log:dpkg-shlibdeps: warning: symbol error_exit used 
by debian/libhavege1/usr/lib/powerpc64le-linux-gnu/libhavege.so.1.1.0 found in 
none of the libraries
./haveged_1.9.4-2_ppc64.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/powerpc64-linux-gnu/libhavege.so.1.1.0 found in 
none of the libraries
./haveged_1.9.4-2_ppc64.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/powerpc64-linux-gnu/libhavege.so.1.1.0 found in none 
of the libraries
./haveged_1.9.4-2_riscv64.log:dpkg-shlibdeps: warning: symbol error_exit used 
by debian/haveged-udeb/usr/lib/riscv64-linux-gnu/libhavege.so.1.1.0 found in 
none of the libraries
./haveged_1.9.4-2_riscv64.log:dpkg-shlibdeps: warning: symbol error_exit used 
by debian/libhavege1/usr/lib/riscv64-linux-gnu/libhavege.so.1.1.0 found in none 
of the libraries
./haveged_1.9.4-2_s390x.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/s390x-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_s390x.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/s390x-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_sh4.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/sh4-linux-gnu/libhavege.so.1.1.0 found in none of the 
libraries
./haveged_1.9.4-2_sh4.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/sh4-linux-gnu/libhavege.so.1.1.0 found in none of 
the libraries
./haveged_1.9.4-2_sparc64.log:dpkg-shlibdeps: warning: symbol error_exit used 
by debian/haveged-udeb/usr/lib/sparc64-linux-gnu/libhavege.so.1.1.0 found in 
none of the libraries
./haveged_1.9.4-2_sparc64.log:dpkg-shlibdeps: warning: symbol error_exit used 
by debian/libhavege1/usr/lib/sparc64-linux-gnu/libhavege.so.1.1.0 found in none 
of the libraries
./haveged_1.9.4-2_x32.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/haveged-udeb/usr/lib/x86_64-linux-gnux32/libhavege.so.1.1.0 found in 
none of the libraries
./haveged_1.9.4-2_x32.log:dpkg-shlibdeps: warning: symbol error_exit used by 
debian/libhavege1/usr/lib/x86_64-linux-gnux32/libhavege.so.1.1.0 found in none 
of the libraries

-- System Information:
Debian Release: bullseye/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.2.0-2-amd64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_FIRMWARE_WORKAROUND, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
Locale: LANG=en_AU.utf8, LC_CTYPE=en_AU.utf8 (charmap=UTF-8), 
LANGUAGE=en_AU.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages libhavege1:amd64 depends on:
ii  libc6  2.28-10

libhavege1:amd64 recommends no packages.

libhavege1:amd64 suggests no packages.

-- no debconf information

-- 
bye,
pabs

https://wiki.debian.org/PaulWise

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to