Subject: bug#58783: Strange booting/reproducibility issue

From: Denis 'GNUtoo' Carikli <[email-masked]>
Date: Wed, 26 Oct 2022 00:43:03 +0200

Hi,

On an i686 computer[1], I've a Guix installation on an HDD, and if I do
> guix pull -M 1 -c 1
and that I then do
> sudo -E guix system reconfigure -M 1 -c 1 system.scm

I get the following boot failure[2]:
> GC Warning: pthread_getattr_np or pthread_attr_getstack failed for
> main thread GC Warning: Couldn't read /proc/stat
> Welcome, this is GNU's early boot Guile.
> Use 'gnu.repl' for an initrd REPL.
> 
> loading kernel modules...
> Enter passphrase for /dev/sda2: 
> /dev/mapper/cryptroot: recovering journal
> /dev/mapper/cryptroot: clean, 702176/9773056 files, 8418369/39071232
> blocks ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> In procedure mkdir: File exists
> 
> Entering a new prompt.  Type `,bt' for a backtrace or `,q' to
> continue. GNU Guile 3.0.7
> Copyright (C) 1995-2021 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)> 

If I use the same system.scm (attached) and that I produce an image
with the build_init.sh script (attached) which setups an encrypted
partition and uses guix system init, and that I then copy the resulting
image to an USB drive with ddrescue, It then boots fine.

Since the system ends up not booting anymore when I try to guix pull
and guix system reconfigure the system on the HDD, to boot I simply
select a known booting old revision in the grub menu, so I can easily
test things.

Though I'm not sure where to look. Is there anything I can do to get
more contexts or logs? Should I try loglevel=8 ?

References:
-----------
[1] The computer is a Thinkpad X60 with only an external display running
    Coreboot with SeaBIOS.
[2] The boot log was captured by adding console=ttyS0,115200 to the
    command line arguments in grub and by capturing the messages
    through a serial port.

Denis.