--check, --rounds and --keep-failed used together produce empty store items

  • Open
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
important
M
M
Maxim Cournoyer wrote on 26 Oct 2021 04:18
(name . bug-guix)(address . bug-guix@gnu.org)
87y26gfs0n.fsf@gmail.com
Hello,

While debugging while guix substitution would fail with a "corrupt input
while restoring ..." error message, I saw in the guix-substitute strace
output that it was attempting to substitute a nonexistent store item.

I then narrowed the production of such broken store item to using the
following guix build options together:

Toggle snippet (10 lines)
$ guix build hello --check --rounds=2 --keep-failed
[...]
successfully built /gnu/store/260bk0ch4np4h2yz5yqhf8hjbsyhwpmr-hello-2.10.drv
successfully built /gnu/store/260bk0ch4np4h2yz5yqhf8hjbsyhwpmr-hello-2.10.drv
/gnu/store/81bdcd5x4v50i28h98bfkvvkx9cky63w-hello-2.10

stat /gnu/store/81bdcd5x4v50i28h98bfkvvkx9cky63w-hello-2.10
stat: cannot statx '/gnu/store/81bdcd5x4v50i28h98bfkvvkx9cky63w-hello-2.10': No such file or directory

That's bad, especially since a subsequent 'guix build hello' doesn't fix
it (it keeps the corrupted cached item, even with --check!).

One needs to run

$ guix gc -D /gnu/store/81bdcd5x4v50i28h98bfkvvkx9cky63w-hello-2.10
$ guix build hello

to recover :-/.

This bug was probably exposed via
0fa0e8df60b0b005a8d9499562464c5a66218a5b, which enabled using --check
along with --rounds.

Thanks,

Maxim
L
L
Ludovic Courtès wrote on 19 Nov 2021 15:48
control message for bug #51400
(address . control@debbugs.gnu.org)
878rxkkxq0.fsf@gnu.org
severity 51400 important
quit
?