On Thu, Feb 13, 2020 at 08:23:32AM -0600, Eric Blake wrote:
On 2/13/20 8:01 AM, Richard W.M. Jones wrote:
>Do not use LD_LIBRARY_PATH to locate the VDDK library. Setting this
>always causes problems because VDDK comes bundled with broken
>replacements for system libraries, such as libcrypto.so and
>libstdc++.so. Two problems this causes which we have seen in the real
>world:
>
>(1) User does ‘export LD_LIBRARY_PATH=vmware-vix-disklib-distrib’ and
>that breaks lots of ordinary utilities on their system.
>
>(2) nbdkit vddk --run subcommand inherits the LD_LIBRARY_PATH
>environment variable from nbdkit, and common commands such as
>'qemu-img' break, relying on complex workarounds like saving and
>restoring the original LD_LIBRARY_PATH in the subcommand.
>
>Instead rely on a relatively undocumented feature of dlopen which is
>that when we pass in a full path it will try to load dependent
>libraries from the same directory.
>
>Note this may break some callers who are not using libdir and
>expecting LD_LIBRARY_PATH to work, so it's a change in behaviour which
>we will have to highlight prominently in the 1.18 release notes.
>
>Thanks: Dan Berrange, Ming Xie, Eric Blake.
Do you want to use Dan's preferred UTF-8 spelling?
I'll fix this. Hope mxie doesn't mind being "romanized" :-)
>+ if (asprintf (&path, "%s/lib%d/%s",
>+ libdir ? : VDDK_LIBDIR, 8*SIZEOF_LONG, sonames[i]) == -1) {
could you just spell this sizeof(long)*CHAR_BITS?
I'm guessing that the vddk files always ship with a dir/lib32/xxx.so
and a dir/lib64/xxx.so convention?
Or, can we just hard-code the name '/lib64/', since...
It uses lib32/ or lib64/. i386 support was dropped in VDDK > 5.1.1,
but in theory we support it.
But the idea looks sane to me. I don't have VDDK libraries
installed
so I can't readily test it, but assume this helps.
There's a larger problem with this patch as we discussed on IRC, so
I'll try to spin a second version.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/