Subject: bug#52464: Backtrace during substitution

From: Maxime Devos <[email-masked]>
Date: Mon, 13 Dec 2021 14:48:55 +0000

Hi,

Lars-Dominik Braun schreef op ma 13-12-2021 om 13:31 [+0100]:
> substituting /gnu/store/xbxrx9yqgqbv6949gl9v9h2wm2y1iwqh-scikit-
> image-0.18.1.tar.gz...
> downloading from 
> https://ci.guix.gnu.org/nar/xbxrx9yqgqbv6949gl9v9h2wm2y1iwqh-scikit-image-0.18.1.tar.gz
>  ...
>  scikit-image-0.18.1.tar.gz  28.3MiB 8.42GiB/s 00:00
> [################  ]  89.9%Backtrace:
>  [...]
> In guix/progress.scm:
>    223:17  2 (display-download-progress "scikit-image-0.18.1.tar.g@"
> …)
> In ice-9/boot-9.scm:
>   1685:16  1 (raise-exception _ #:continuable? _)
>   1685:16  0 (raise-exception _ #:continuable? _)
> 
> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> In procedure =: Wrong type argument in position 1: #f

I guess that means 'transferred' is #false somehow.
Looking at guix/status.scm, maybe the following is important:

>    (('download-progress item uri
>                         (= string->number size)
>                         (= string->number transferred))

string->number returns #f if the input is malformed, so I guess that
is what happens. I don't know _how_ that happens though.

Detecting #f somewhere and emitting a warning or error like
‘warning: ‘the malformed string’, representing the number of
transferred bytes, is malformed’ would be better. Fixing the underlying
error would be ideal.

I think I've seen this reported before, though I cannot find it again.

Greetings,
Maxime.