[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activati
From: |
Ludovic Courtès |
Subject: |
[bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation. |
Date: |
Sat, 16 Sep 2017 00:02:08 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
Heya,
Christopher Baines <address@hidden> skribis:
> On Mon, 11 Sep 2017 09:50:46 +0200
> address@hidden (Ludovic Courtès) wrote:
>
>> Hi Chris,
>>
>> Christopher Baines <address@hidden> 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…
Ludo’.