Subject: Substitute server errors lead to client crashes

From: Ludovic Courtès <[email-masked]>
Date: Mon, 06 Jun 2022 14:48:22 +0200

Here’s an example of a substitute server issue that leads to ugly client
crashes:

--8<---------------cut here---------------start------------->8---
$ guix upgrade

[…]

guix substitute: warning: while fetching https://bordeaux.guix.gnu.org/nar/lzip/fan4wanq1138ds9pj0s63f2iv4qygng0-dstat-0.7.4: server is somewhat slow
guix substitute: warning: try `--no-substitutes' if the problem persists
Backtrace:
In ice-9/boot-9.scm:
  1752:10 19 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
          18 (apply-smob/0 #<thunk 7f0e562b2f60>)
In ice-9/boot-9.scm:
    724:2 17 (call-with-prompt _ _ #<procedure default-prompt-handleâ¦>)
In ice-9/eval.scm:
    619:8 16 (_ #(#(#<directory (guile-user) 7f0e562acc80>)))
In guix/ui.scm:
   2206:7 15 (run-guix . _)
  2169:10 14 (run-guix-command _ . _)
In ice-9/boot-9.scm:
  1752:10 13 (with-exception-handler _ _ #:unwind? _ # _)
  1752:10 12 (with-exception-handler _ _ #:unwind? _ # _)
In guix/scripts/substitute.scm:
   771:15 11 (_)
In ice-9/exceptions.scm:
   406:15 10 (process-substitution #<output: file 4> _ "/gnu/store/â¦" â¦)
In ice-9/boot-9.scm:
  1752:10  9 (with-exception-handler _ _ #:unwind? _ # _)
In guix/scripts/substitute.scm:
    479:9  8 (_)
In ice-9/boot-9.scm:
  1747:15  7 (with-exception-handler #<procedure 7f0e53925f00 at icâ¦> â¦)
  1685:16  6 (raise-exception _ #:continuable? _)
  1683:16  5 (raise-exception _ #:continuable? _)
  1685:16  4 (raise-exception _ #:continuable? _)
  1780:13  3 (_ #<&compound-exception components: (#<&error> #<&irriâ¦>)
  1685:16  2 (raise-exception _ #:continuable? _)
  1683:16  1 (raise-exception _ #:continuable? _)
  1685:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1685:16: In procedure raise-exception:
ERROR:
  1. &http-get-error:
      uri: #<<uri> scheme: https userinfo: #f host: "bordeaux.guix.gnu.org" port: #f path: "/nar/lzip/fan4wanq1138ds9pj0s63f2iv4qygng0-dstat-0.7.4" query: #f fragment: #f>
      code: 502
      reason: "Bad Gateway"
  2. &message: "https://bordeaux.guix.gnu.org/nar/lzip/fan4wanq1138ds9pj0s63f2iv4qygng0-dstat-0.7.4: HTTP download failed: 502 (\"Bad Gateway\")"
substitution of /gnu/store/fan4wanq1138ds9pj0s63f2iv4qygng0-dstat-0.7.4 failed
guix upgrade: error: corrupt input while restoring archive from socket
--8<---------------cut here---------------end--------------->8---

This should be handled gracefully.

Also, in this case, ‘--fallback’ appears to have no effect.

Ludo’.