Subject: Re: bug#31843: guix pull corrupted current guix

From: [email-masked] (Ludovic Courtès)
Date: Fri, 15 Jun 2018 17:27:16 +0200

Hello,

Julien Lepiller <[email-masked]> skribis:

> Hi, running guix pull this morning corrupted my current guix command.

Let’s not jump to the conclusion.  :-)

> I am running on guixsd. Because I don't have a lot of memory, I sent a
> generation of .config/guix/current to the server with:
>
> guix archive --export -r `readlink -f .config/guix/current` | ssh
> machine guix archive --import

Note that you can use ‘guix copy’ instead, which avoids sending store
items already present on the target.

> This morning, I tried to run guix pull to see how far it would go (and
> if I could download some parts from hydra or berlin). As expected, it
> ran out of memory, but left my store in a state where the guix command
> linked to from .config/guix/current only contains garbage. Attached is
> the output of "guix pull --cores=1" on that machine that lead to the
> bug, and the new content of the guix command.
>
> The corrupted file is from a store item that was present (and valid)
> before I ran guix pull, so I thought it was impossible for guix to
> modify it.

[...]

> compiling...	100.0% of 1 files
> compiling...	 65.0% of 40 filesIn ice-9/boot-9.scm:
>     829:9 19 guile: symbol lookup error: /gnu/store/6mfd4f8gy11rgn2xk00cnslmrslg9w7h-guile-2.2.3/lib/libguile-2.2.so.1: undefined symbol: u8_mbtoucr
> guix pull: error: corrupt input while restoring archive from #<closed: file 31742a0>

To me, this error suggests that
/gnu/store/6mfd4f8gy11rgn2xk00cnslmrslg9w7h-guile-2.2.3 was already
corrupt at the time you run ‘guix pull’.

Did you try running ‘guix gc --verify’ on that machine (using an older
Guix)?

Are there signs in the kernel log of a file system corruption?

Thanks,
Ludo’.