Subject: bug#22545: bug#22548: Kernel panic after system reconfiguration

From: [email-masked] (Ludovic Courtès)
Date: Fri, 05 Feb 2016 14:05:25 +0100

[email-masked] (Ludovic Courtès) skribis:

> Alex Kost <[email-masked]> skribis:
>
>> And as reported by several people on #guix (I count at least 4 including
>> me and Mark) a wrong swap device leads to a kernel panic if shepherd is
>> used as the init system.
>>
>> Until I realized that it was a wrong swap, I made bisecting on shepherd
>> to find out which commit introduced this bug.  It gave me commit
>> 852341e¹: when I reconfigured my system (with a wrong swap) using
>> shepherd on this commit, I had a kernel panic, while with shepherd on
>> the previous commit the system booted successfully.
>>
>> ¹ http://git.savannah.gnu.org/cgit/shepherd.git/commit/?id=852341ed0c08941cbdd022135f8bef7be2d7ec54
>
> Ooooh, it took me a while but I see how this happens.  This is because
> we start services directly from the config file, and anything that goes
> wrong there is uncaught, which leads to this:
>
> Service udev has been started.
> srfi-34(#<condition &action-runtime-error [service: #<<service> 184b150> action: start key: system-error arguments: ("swapon" "~S: ~A" ("/dev/disk/foobar" "No such file or directory") (2))] 1ea24c0>)
> [    6.856167] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100
> [    6.856167] 
> [    6.856869] CPU: 0 PID: 1 Comm: shepherd Not tainted 4.4.1-gnu #1
> [    6.857319] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.8.2-0-g33fbe13 by qemu-project.org 04/01/2014

Commit 081bd3b fixes it.  Commit 234ea8a defensively wraps all the
configuration file in ‘call-with-error-handling’, which spawns a REPL
upon error.

Thanks for the detailed investigation!

Ludo’.