[Libguestfs] [nbdkit PATCH v5 4/4] vddk: Drive library loading from libdir parameter.

Richard W.M. Jones rjones at redhat.com
Mon Feb 17 18:17:58 UTC 2020


Unfortunately this series doesn't work with the real VDDK library :-(

I see:

  nbdkit: debug: vddk: config_complete
  nbdkit: debug: dlopen shim prefix set to /home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64

Then a little bit later during VDDK initialization it fails with:

  nbdkit: debug: VixDiskLib: Could not load default plugins from /home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64/libdiskLibPlugin.so: Cannot open library: libcrypto.so.1.0.2: cannot open shared object file: No such file or directory.

I was curious if the replacement dlopen() was being called at all, and
it is certainly called from plugins/vddk/vddk.c:

  nbdkit: debug: dlopen: /home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64/libvixDiskLib.so.6 flags=2

It's also called from VDDK itself:

  nbdkit: debug: dlopen: /home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64/libdiskLibPlugin.so flags=257

but it's not being explicitly called for libcrypto.so because
immediately after the above message I see the error:

  nbdkit: debug: VixDiskLib: Could not load default plugins from /home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64/libdiskLibPlugin.so: Cannot open library: libcrypto.so.1.0.2: cannot open shared object file: No such file or directory.

So I guess libcrypto is actually loaded from a DT_NEEDED entry:

  $ eu-readelf -d /home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64/libdiskLibPlugin.so  | grep NEEDED
    NEEDED            Shared library: [libpthread.so.0]
    NEEDED            Shared library: [libstdc++.so.6]
    NEEDED            Shared library: [libdl.so.2]
    NEEDED            Shared library: [libcrypto.so.1.0.2]
    NEEDED            Shared library: [libssl.so.1.0.2]
    NEEDED            Shared library: [libexpat.so]
    NEEDED            Shared library: [libz.so.1]
    NEEDED            Shared library: [libvmacore.so]
    NEEDED            Shared library: [libvmomi.so]
    NEEDED            Shared library: [libvim-types.so]
    NEEDED            Shared library: [librt.so.1]
    NEEDED            Shared library: [libgcc_s.so.1]
    NEEDED            Shared library: [libc.so.6]
    NEEDED            Shared library: [ld-linux-x86-64.so.2]

which I suppose doesn't actually go through dlopen ...

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v




More information about the Libguestfs mailing list