[Libguestfs] [PATCH nbdkit v2 2/2] wrapper: Remove GLIBC_TUNABLES when running under valgrind

Siddhesh Poyarekar sipoyare at redhat.com
Tue Aug 24 11:44:14 UTC 2021


On Tue, Aug 24, 2021 at 2:52 PM Richard W.M. Jones <rjones at redhat.com> wrote:
>
> There's a problem here ...
>
> For background see:
> https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/7R3H3RWXC2FEJ6MRTFFUZY5KRYKPL2TQ/
> (You have to click the "..." in that email)
>
> If libc_malloc_debug.so.0 isn't installed then LD_PRELOAD generates
> lots of warning messages and this actually breaks some tests.
>
> If ./configure is used without --libdir then we try to set
> LD_PRELOAD=/usr/local/lib/libc_malloc_debug.so.0 which causes the
> warnings/failures.
>
> My first idea was to test in ./configure if $libdir/libc_malloc_debug.so.0
> exists and only set LD_PRELOAD if so.  However that doesn't work
> because of $!"£% exec_prefix (a.k.a. the most useless GNU feature that
> no one uses but causes all the trouble).
>
> Also if you have glibc.i686 and glibc.x86_64 installed then both
> /lib64/libc_malloc_debug.so.0 and /lib/libc_malloc_debug.so.0 exist
> and you must choose the correct one.  On other distros the path will
> be different, eg. the 64 bit one in /lib/libc_malloc_debug.so.0 or
> /lib/x86_64-linux-gnu/... etc.

ld.so has a new --list-diagnostics option (since 2.34 AFAICT,
backported to at least 2.33) that lists the system directories; maybe
that could help?

$ /lib64/ld-linux-x86-64.so.2 --list-diagnostics | grep system_dirs
path.system_dirs[0x0]="/lib64/"
path.system_dirs[0x1]="/usr/lib64/"

libc_malloc_debug.so.0 will always be in one of these directories
unless a distribution has misconfigured their glibc and not added
their multilib paths into system_dirs.

> So I don't know how to solve any of this.  It would be nicer if glibc
> handled the details and automatically loaded the right library if
> GLIBC_TUNABLES was set.

It is not impossible to implement; tunable parsing happens early
enough that if any tunable requires a preloaded module then we can
make it happen as long as the module is in path.system_dirs.  We could
fail silently too; it's certainly better than ignoring silently.

Do you see any gotchas here Florian?

Siddhesh





More information about the Libguestfs mailing list