Control: reassign -1 libdnssec6
Control: retitle -1 libdnssec6: Does not link against pthread but uses its 
symbols

Hi!

On Fri, 2018-11-30 at 12:03:30 -0500, Daniel Kahn Gillmor wrote:
> Package: dpkg-dev
> Version: 1.19.2
> Severity: normal
> Control: affects -1 libdnssec6

> libdnssec.so.6.0.0 links against pthread, and uses pthread_once.

> Here's a shell transcript which describes the problem:
> 
> 0 dkg@alice:~/src/pkg-dns/knot-dns$ dpkg-shlibdeps 
> /usr/lib/x86_64-linux-gnu/libdnssec.so.6.0.0
> dpkg-shlibdeps: warning: binaries to analyze should already be installed in 
> their package's directory
> dpkg-shlibdeps: warning: symbol pthread_once used by 
> /usr/lib/x86_64-linux-gnu/libdnssec.so.6.0.0 found in none of the libraries
> dpkg-shlibdeps: warning: package could avoid a useless dependency if 
> /usr/lib/x86_64-linux-gnu/libdnssec.so.6.0.0 was not linked against libm.so.6 
> (it uses none of the library's symbols)
> 0 dkg@alice:~/src/pkg-dns/knot-dns$ awk '($1 ~ /\.so/) { lib=$1 } /^ 
> pthread_once@/{print lib ":" $0 }' /var/lib/dpkg/info/*.symbols
> libpthread.so.0: pthread_once@GLIBC_2.2.5 2.2.5
> libpthread.so.0: pthread_once@GLIBC_2.0 2.0
> libpthread.so.0: pthread_once@GLIBC_2.16 2.16
> libtsan.so.0: pthread_once@Base 4.9
> 0 dkg@alice:~/src/pkg-dns/knot-dns$ ldd 
> /usr/lib/x86_64-linux-gnu/libdnssec.so.6.0.0  | grep pthread
>       libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
> (0x00007f98bd112000)
> 0 dkg@alice:~/src/pkg-dns/knot-dns$ 

But it does not really link against libpthread :), it does so only
transitively. ldd is not a very good tool to query this, as it list
all transitive dependencies, use objdump or readelf instead:

  $ readelf -d /usr/lib/x86_64-linux-gnu/libdnssec.so.6.0.0 | grep NEEDED
   0x0000000000000001 (NEEDED)             Shared library: [libgnutls.so.30]
   0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
   0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]

or

  $ objdump -p /usr/lib/x86_64-linux-gnu/libdnssec.so.6.0.0 | grep NEEDED
    NEEDED               libgnutls.so.30
    NEEDED               libm.so.6
    NEEDED               libc.so.6

So you'd need to check why the library is not linking against pthread,
because of any of the others stop doing so, this one will fail to
link.

Thanks,
Guillem

Reply via email to