Subject: Re: bug#71160: --fallback and (fallback #t) do not apply when receiving a corrupt nar

From: Richard Sent <[email-masked]>
Date: Sat, 25 May 2024 22:06:26 -0400

Richard Sent <[email-masked]> writes:

> Trying to pass --fallback on the command line has no effect, even though
> both the documentation and [1] imply that should work.

This issue might have some spiciness to it. I have two machines with
identical guix commits and --fallback works on one but not the other.

--8<---------------cut here---------------start------------->8---
# Failing machine:
root@lifeline ~# guix describe
Generation 2    May 25 2024 21:03:46    (current)
  guix 94c8cec
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 94c8cec99969fe9f65777637fde1f05e1c576a3f

# Good machine:
Generation 3	May 25 2024 21:58:15	(current)
  guix 94c8cec
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 94c8cec99969fe9f65777637fde1f05e1c576a3f
--8<---------------cut here---------------end--------------->8---

On the failing machine, I get an error like this:

--8<---------------cut here---------------start------------->8---
root@lifeline ~# guix build linux-libre-arm64-generic --system=aarch64-linux --fallback
# snip
downloading from https://bordeaux.guix.gnu.org/nar/none/y813phs2n9xnb7zbcr07g0j9509bzbsb-linux-libre-6.8.10-guix.tar.xz ...
 linux-libre-6.8.10-guix.tar.xz  136.5MiB                                                                          19.0MiB/s 00:07 ▕█████████████████▉▏  99.9%guix substitute: error: corrupt input while restoring '/gnu/store/y813phs2n9xnb7zbcr07g0j9509bzbsb-linux-libre-6.8.10-guix.tar.xz' from #<input: string 7f558e7233f0>
substitution of /gnu/store/y813phs2n9xnb7zbcr07g0j9509bzbsb-linux-libre-6.8.10-guix.tar.xz failed
guix build: error: corrupt input while restoring archive from #<closed: file 7f51c615b380>
root@lifeline ~# logout
--8<---------------cut here---------------end--------------->8---

whereas on the good machine:

--8<---------------cut here---------------start------------->8---
root@gibraltar ~# guix build linux-libre-arm64-generic --system=aarch64-linux --fallback
# snip
downloading from https://bordeaux.guix.gnu.org/nar/none/y813phs2n9xnb7zbcr07g0j9509bzbsb-linux-libre-6.8.10-guix.tar.xz ...
 linux-libre-6.8.10-guix.tar.xz  136.5MiB                                                                          19.6MiB/s 00:07 ▕█████████████████▊▏  98.8%guix substitute: error: corrupt input while restoring '/gnu/store/y813phs2n9xnb7zbcr07g0j9509bzbsb-linux-libre-6.8.10-guix.tar.xz' from #<input: string 7f7b2a223b60>
substitution of /gnu/store/y813phs2n9xnb7zbcr07g0j9509bzbsb-linux-libre-6.8.10-guix.tar.xz failed
building /gnu/store/ny56fdcig9cd9bd3pssmlraz2c1q10q8-linux-libre-6.8.10-guix.tar.xz.drv...
--8<---------------cut here---------------end--------------->8---

I thought perhaps there was some hyper-odd race condition going on here
(lifeline is consistently at a higher percent than gibraltar when the
error is detected), but I just had a outlier that seems to disprove
that, where lifeline had the same error with a 97.2% download progress
bar.

-- 
Take it easy,
Richard Sent
Making my computer weirder one commit at a time.