[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

baffled by a slightly broken systemd and /lib/systemd/libsystemd-shared-235.so




It seems that I have annoyed the runtime loader in that something as
simple as a shutdown now issues these concerns :

nix ppc64# shutdown -r "now"
shutdown: /usr/local/lib/libblkid.so.1: no version information available (required by /lib/systemd/libsystemd-shared-235.so) shutdown: /usr/local/lib/libblkid.so.1: no version information available (required by /lib/systemd/libsystemd-shared-235.so) shutdown: /usr/local/lib/libblkid.so.1: no version information available (required by /lib/systemd/libsystemd-shared-235.so) shutdown: /usr/local/lib/libuuid.so.1: no version information available (required by /lib/powerpc64-linux-gnu/libcryptsetup.so.4) shutdown: relocation error: /lib/systemd/libsystemd-shared-235.so: symbol blkid_free_probe version BLKID_2.15 not defined in file libblkid.so.1 with link time reference
nix ppc64#


For reasons yet unknown the runtime loader is looking *first* into my
local /usr/local/lib area and finding a newly built e2fsprogs shared
object /usr/local/lib/libblkid.so.1 and also /usr/local/lib/libuuid.so.1
which are both just fine as they are. Both are the result of e2fsprogs-1.44.1 which was released 25-Mar-2018.

I see why the problem is happening in that the systemd shared object
at /lib/systemd/libsystemd-shared-235.so has a ghastly huge 3070 entries
in its '.gnu.version' elf section as well as some version needed into in
the section '.gnu.version_r'.  This is interesting :

  0x00c0: Version: 1  File: libblkid.so.1  Cnt: 3
  0x00d0:   Name: BLKID_2.18  Flags: none  Version: 20
  0x00e0:   Name: BLKID_2.17  Flags: none  Version: 9
  0x00f0:   Name: BLKID_2.15  Flags: none  Version: 6

What baffles me is why look in /usr/local/lib to satisfy these verneed
 symbol requirements?

If I do something obscure and set :

  LD_LIBRARY_PATH=/lib/powerpc64-linux-gnu

Then ldd is happy and finds everything needed in the system lib area.
Just watch :

root@nix:~# LD_LIBRARY_PATH=/lib/powerpc64-linux-gnu ldd /lib/systemd/libsystemd-shared-235.so
        linux-vdso64.so.1 (0x00007fffadd40000)
libpthread.so.0 => /lib/powerpc64-linux-gnu/libpthread.so.0 (0x00007fffada20000) libc.so.6 => /lib/powerpc64-linux-gnu/libc.so.6 (0x00007fffad810000) librt.so.1 => /lib/powerpc64-linux-gnu/librt.so.1 (0x00007fffad7e0000) libcap.so.2 => /lib/powerpc64-linux-gnu/libcap.so.2 (0x00007fffad7b0000) libacl.so.1 => /lib/powerpc64-linux-gnu/libacl.so.1 (0x00007fffad780000) libcryptsetup.so.4 => /lib/powerpc64-linux-gnu/libcryptsetup.so.4 (0x00007fffad720000) libgcrypt.so.20 => /lib/powerpc64-linux-gnu/libgcrypt.so.20 (0x00007fffad620000) libip4tc.so.0 => /usr/lib/powerpc64-linux-gnu/libip4tc.so.0 (0x00007fffad5e0000) libseccomp.so.2 => /lib/powerpc64-linux-gnu/libseccomp.so.2 (0x00007fffad570000) libselinux.so.1 => /lib/powerpc64-linux-gnu/libselinux.so.1 (0x00007fffad510000) libidn.so.11 => /lib/powerpc64-linux-gnu/libidn.so.11 (0x00007fffad4b0000) liblzma.so.5 => /lib/powerpc64-linux-gnu/liblzma.so.5 (0x00007fffad460000) liblz4.so.1 => /usr/lib/powerpc64-linux-gnu/liblz4.so.1 (0x00007fffad420000) libblkid.so.1 => /lib/powerpc64-linux-gnu/libblkid.so.1 (0x00007fffad390000)
        /lib64/ld64.so.1 (0x00007fffadd60000)
libattr.so.1 => /lib/powerpc64-linux-gnu/libattr.so.1 (0x00007fffad360000) libuuid.so.1 => /lib/powerpc64-linux-gnu/libuuid.so.1 (0x00007fffad330000) libdevmapper.so.1.02.1 => /lib/powerpc64-linux-gnu/libdevmapper.so.1.02.1 (0x00007fffad280000) libgpg-error.so.0 => /lib/powerpc64-linux-gnu/libgpg-error.so.0 (0x00007fffad230000) libpcre.so.3 => /lib/powerpc64-linux-gnu/libpcre.so.3 (0x00007fffad190000) libdl.so.2 => /lib/powerpc64-linux-gnu/libdl.so.2 (0x00007fffad160000) libudev.so.1 => /lib/powerpc64-linux-gnu/libudev.so.1 (0x00007fffad110000) libm.so.6 => /lib/powerpc64-linux-gnu/libm.so.6 (0x00007fffad010000)

Happy happy joy joy everywhere.

Take away LD_LIBRARY_PATH and we see this :

root@nix:~# unset LD_LIBRARY_PATH
root@nix:~# ldd /lib/systemd/libsystemd-shared-235.so
/lib/systemd/libsystemd-shared-235.so: /usr/local/lib/libblkid.so.1: no version information available (required by /lib/systemd/libsystemd-shared-235.so) /lib/systemd/libsystemd-shared-235.so: /usr/local/lib/libblkid.so.1: no version information available (required by /lib/systemd/libsystemd-shared-235.so) /lib/systemd/libsystemd-shared-235.so: /usr/local/lib/libblkid.so.1: no version information available (required by /lib/systemd/libsystemd-shared-235.so) /lib/systemd/libsystemd-shared-235.so: /usr/local/lib/libuuid.so.1: no version information available (required by /lib/powerpc64-linux-gnu/libcryptsetup.so.4)
        linux-vdso64.so.1 (0x00007fffa85a0000)
libpthread.so.0 => /lib/powerpc64-linux-gnu/libpthread.so.0 (0x00007fffa8270000) libc.so.6 => /lib/powerpc64-linux-gnu/libc.so.6 (0x00007fffa8060000) librt.so.1 => /lib/powerpc64-linux-gnu/librt.so.1 (0x00007fffa8030000) libcap.so.2 => /lib/powerpc64-linux-gnu/libcap.so.2 (0x00007fffa8000000) libacl.so.1 => /lib/powerpc64-linux-gnu/libacl.so.1 (0x00007fffa7fd0000) libcryptsetup.so.4 => /lib/powerpc64-linux-gnu/libcryptsetup.so.4 (0x00007fffa7f70000) libgcrypt.so.20 => /lib/powerpc64-linux-gnu/libgcrypt.so.20 (0x00007fffa7e70000) libip4tc.so.0 => /usr/lib/powerpc64-linux-gnu/libip4tc.so.0 (0x00007fffa7e40000) libseccomp.so.2 => /lib/powerpc64-linux-gnu/libseccomp.so.2 (0x00007fffa7dd0000) libselinux.so.1 => /lib/powerpc64-linux-gnu/libselinux.so.1 (0x00007fffa7d70000) libidn.so.11 => /lib/powerpc64-linux-gnu/libidn.so.11 (0x00007fffa7d10000)
        liblzma.so.5 => /usr/local/lib/liblzma.so.5 (0x00007fffa7cb0000)
liblz4.so.1 => /usr/lib/powerpc64-linux-gnu/liblz4.so.1 (0x00007fffa7c70000)
        libblkid.so.1 => /usr/local/lib/libblkid.so.1 (0x00007fffa7c30000)
        /lib64/ld64.so.1 (0x00007fffa85c0000)
libattr.so.1 => /lib/powerpc64-linux-gnu/libattr.so.1 (0x00007fffa7c00000)
        libuuid.so.1 => /usr/local/lib/libuuid.so.1 (0x00007fffa7bd0000)
libdevmapper.so.1.02.1 => /lib/powerpc64-linux-gnu/libdevmapper.so.1.02.1 (0x00007fffa7b20000) libgpg-error.so.0 => /lib/powerpc64-linux-gnu/libgpg-error.so.0 (0x00007fffa7ad0000) libpcre.so.3 => /lib/powerpc64-linux-gnu/libpcre.so.3 (0x00007fffa7a30000) libdl.so.2 => /lib/powerpc64-linux-gnu/libdl.so.2 (0x00007fffa7a00000) libudev.so.1 => /lib/powerpc64-linux-gnu/libudev.so.1 (0x00007fffa79b0000) libm.so.6 => /lib/powerpc64-linux-gnu/libm.so.6 (0x00007fffa78b0000)
root@nix:~#

Does this mean I need to hack /etc/ld.so.conf.d/libc.conf and remove the
line "/usr/local/lib" ?  That would leave /etc/ld.so.conf.d/libc.conf as
an empty file.

Really baffled why system libs and system packages are hunting into my
own experimental /usr/local for anything .. ever.

For the moment this works :

root@nix:~# LD_LIBRARY_PATH=/lib/powerpc64-linux-gnu shutdown -r "now"
Connection to 172.16.35.5 closed by remote host.
Connection to 172.16.35.5 closed.


Dennis

ps: ref "ELF Symbol Versioning" by Ulrich Drepper
    https://www.akkadia.org/drepper/symbol-versioning


Reply to: