Hi Ludovic, Ludovic Courtès <ludovic.cour...@inria.fr> writes:
[...] > The message comes from ld.so. My guess is that the problem comes from > Bash’s terrible ‘malloc’ replacement: > [...] > [Time passes…] I confirmed this hypothesis by running: > > guix pack -RR -S /bin=bin -m manifest.scm > > on this manifest: > > (use-modules (guix) (guix utils) > (guix profiles) > (gnu packages bash)) > > (define bash-sans-malloc > (package/inherit bash > (name "bash-sans-malloc") > (arguments > (substitute-keyword-arguments (package-arguments bash) > ((#:configure-flags flags ''()) > `(cons "--without-bash-malloc" ,flags)))))) > > (packages->manifest (list bash-sans-malloc)) > > > Works just fine: > > $ unshare -mrf sh -c 'mount -t tmpfs -o ro none /gnu/store; > GUIX_EXECUTION_ENGINE=fakechroot /tmp/pack/bin/bash --version' > GNU bash, version 5.1.8(1)-release (x86_64-unknown-linux-gnu) > Copyright (C) 2020 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> [...] > Perhaps we should build Bash ‘--without-bash-malloc’ unconditionally in > ‘core-updates’? The ‘INSTALL’ file reads: > > '--with-bash-malloc' > Use the Bash version of 'malloc' in the directory 'lib/malloc'. > This is not the same 'malloc' that appears in GNU libc, but an > older version originally derived from the 4.2 BSD 'malloc'. This > 'malloc' is very fast, but wastes some space on each allocation. > This option is enabled by default. The 'NOTES' file contains a > list of systems for which this should be turned off, and > 'configure' disables this option automatically for a number of > systems. > > There might be other options if we want to keep it, such as changing the > ELF visibility of those symbols, but I wonder if it’s worth the effort. > > Thoughts? I'd be OK with --without-bash-malloc; it seems we'll pay a bit in terms of Bash performance in exchange for better memory usage. It also brings benefits such as solving this issue and may benefit from advances/bugfixes to glibc's malloc in the future, if there are any. Well done investigating! Maxim