Hi Chris, Christopher Baines skribis: > On Sat, 16 Sep 2017 00:02:08 +0200 > ludo@gnu.org (Ludovic Courtès) wrote: [...] >> Perhaps it’s due to the libtool/ltdl preload feature. >> >> What’s more puzzling though, is that it works in some cases (like >> above) and not in others (in the test VM). >> >> Needs more thought… > > Interesting, thanks for looking in to this Ludo. I've just thought that > this could be the cause of my problems in booting one of my GuixSD > machines, as I am using the mysql service (with MariaDB). > > When you say dynamic loading is supposed not to work with a statically > linked guile, does this mean that activation scripts should avoid using > (ice-9 popen)? Or, given that it works some of the time, it could be > made to work reliably...? No I was completely on the wrong track (libguile/extensions.c, which implements ‘load-extension’, has a mechanism to load pre-registered extensions without going through ‘dlopen’.) The problem is simpler: the ‘guile-static-stripped’ that’s on the store in the initrd is not necessarily in the store on the real root file system. Thus, once we’ve switched roots, we look for “ice-9/popen.scm” in a load path that’s no longer valid. I debugged this with: