GNU bug report logs -
#28399
[PATCH]: Fix mysql activation, and add a basic test.
Previous Next
Reported by: Christopher Baines <mail <at> cbaines.net>
Date: Sat, 9 Sep 2017 14:40:01 UTC
Severity: normal
Tags: patch
Done: Christopher Baines <mail <at> cbaines.net>
Bug is archived. No further changes may be made.
Full log
Message #23 received at 28399 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Sat, 16 Sep 2017 00:02:08 +0200
ludo <at> gnu.org (Ludovic Courtès) wrote:
> Heya,
>
> Christopher Baines <mail <at> cbaines.net> skribis:
>
> > On Mon, 11 Sep 2017 09:50:46 +0200
> > ludo <at> gnu.org (Ludovic Courtès) wrote:
> >
> >> Hi Chris,
> >>
> >> Christopher Baines <mail <at> cbaines.net> skribis:
> >>
> >> > Some systems using the MySQL service would fail to boot, giving
> >> > the error:
> >> >
> >> > ERROR: no code for module (ice-9 popen)
>
> [...]
>
> >> The ‘use-modules’ form should be enough. Does the test you sent
> >> reproduce the original problem?
> >
> > It does for me. If you just revert the commit adding in the
> > with-imported-modules bit, running the mysql system test then fails:
> >
> > ERROR: In procedure scm-error:
> > ERROR: no code for module (ice-9 popen)
>
> The activation script is run by the “boot” script before it spawns
> shepherd. The boot script runs over the initrd’s Guile, which is
> statically linked.
>
> However, (ice-9 popen) starts by dynamically loading libguile and
> calling a function therein:
>
> (eval-when (expand load eval)
> (load-extension (string-append "libguile-" (effective-version))
> "scm_init_popen"))
>
> Dynamic loading is not supposed to work in the statically-linked
> Guile, but apparently it does work sometimes:
>
> --8<---------------cut here---------------start------------->8---
> $ sudo
> chroot /gnu/store/3ir873f4dsdl3aaj48iqykn6437ilk0p-guile-static-stripped-2.2.2 /bin/guile
> guile: warning: failed to install locale GC Warning:
> pthread_getattr_np or pthread_attr_getstack failed for main thread GC
> Warning: Couldn't read /proc/stat warning: failed to install locale:
> Invalid argument GNU Guile 2.2.2
> Copyright (C) 1995-2017 Free Software Foundation, Inc.
>
> Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
> This program is free software, and you are welcome to redistribute it
> under certain conditions; type `,show c' for details.
>
> Enter `,help' for help.
> scheme@(guile-user)> ,use(ice-9 popen)
> scheme@(guile-user)> open-pipe*
> $1 = #<procedure open-pipe* (mode command . args)>
> --8<---------------cut here---------------end--------------->8---
>
> 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...?
[Message part 2 (application/pgp-signature, inline)]
This bug report was last modified 7 years and 231 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.