'guix substitute' crashes in zstd on transient networking issues

  • Open
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Matthias
Owner
unassigned
Submitted by
Matthias
Severity
important

Debbugs page

M
M
Matthias wrote on 15 Jun 2022 21:09
Guix crashes at while downloading an update
(address . bug-guix@gnu.org)
92fd6760-bbdc-b2d3-5364-4b69a7ae3e4d@smartflyer.de
I just downloaded the QEMU image for the Guix distribution and wanted to
try it out. I use QEMU and AQEMU from the current Debian Testing.

To try out the package manager I installed the Lynx terminal browser.
That worked without any problems (lynx is working), but guix said I
should update the system with the commands "guix pull" and "guix package
-u". Excited to be able to explore more features I typed in the first
command, but while downloading the package "apr" it crashed. See the
attachment for guix' output.

Guix version ("guix --version"): 1.3.0-1.771b866

PS: The "You found a bug" message is awesome! Instead of getting angry
at a not working program, I got excited to have found something new.
L
L
Ludovic Courtès wrote on 26 Jun 2022 08:28
(name . Matthias)(address . matthias.kaak@smartflyer.de)(address . 56014@debbugs.gnu.org)
8735frsau3.fsf@gnu.org
Hi Matthias,

Matthias <matthias.kaak@smartflyer.de> skribis:

Toggle quote (12 lines)
> I just downloaded the QEMU image for the Guix distribution and wanted
> to try it out. I use QEMU and AQEMU from the current Debian Testing.
>
> To try out the package manager I installed the Lynx terminal
> browser. That worked without any problems (lynx is working), but guix
> said I should update the system with the commands "guix pull" and
> "guix package -u". Excited to be able to explore more features I
> typed in the first command, but while downloading the package "apr" it
> crashed. See the attachment for guix' output.
>
> Guix version ("guix --version"): 1.3.0-1.771b866

[...]

Toggle quote (39 lines)
> xz-5.2.5 308KiB 568.9MiB/s 00:00 [##################] 100.0%
> glib-2.70.2 2.7MiB 4.68GiB/s 00:00 [##################] 100.0%
> apr-1.7.0 314KiB 581.4MiB/s 00:00 [####### ] 40.7%Backtrace:
> In guix/serialization.scm:
> 468:33 19 (read "/gnu/store/rbb9h501zyf8mg1hz47plql80gsl99za-apr?" ?)
> 468:33 18 (read "/gnu/store/rbb9h501zyf8mg1hz47plql80gsl99za-apr?" ?)
> 442:24 17 (read "/gnu/store/rbb9h501zyf8mg1hz47plql80gsl99za-apr?" ?)
> 525:24 16 (_ "/gnu/store/rbb9h501zyf8mg1hz47plql80gsl99za-apr-1.?" ?)
> In guix/store/deduplication.scm:
> 227:2 15 (dump-file/deduplicate "/gnu/store/rbb9h501zyf8mg1hz47?" ?)
> In ice-9/ports.scm:
> 463:17 14 (call-with-output-file _ _ #:binary _ #:encoding _)
> In guix/store/deduplication.scm:
> 232:10 13 (_ _)
> In guix/serialization.scm:
> 261:6 12 (dump _)
> 247:20 11 (dump #<input: string 7fd40c2b5af0> #<output: string 7?> ?)
> In unknown file:
> 10 (get-bytevector-n! #<input: string 7fd40c2b5af0> # 0 #)
> In guix/store/deduplication.scm:
> 203:22 9 (read! #vu8(47 42 32 76 105 99 101 110 115 101 100 32 ?) ?)
> In unknown file:
> 8 (get-bytevector-n! #<input: string 7fd409cdcd20> # 0 #)
> In gcrypt/hash.scm:
> 223:13 7 (read! #vu8(47 42 32 76 105 99 101 110 115 101 100 32 ?) ?)
> In unknown file:
> 6 (get-bytevector-n! #<input: string 7fd409cdce70> # 0 #)
> In zstd.scm:
> 256:12 5 (read! _ _ _)
> In ice-9/boot-9.scm:
> 1669:16 4 (raise-exception _ #:continuable? _)
> 1669:16 3 (raise-exception _ #:continuable? _)
> 1764:13 2 (_ #<&compound-exception components: (#<&error> #<&irri?>)
> 1669:16 1 (raise-exception _ #:continuable? _)
> 1669:16 0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1669:16: In procedure raise-exception:
> Throw to key `zstd-error' with args `(decompress! 18446744073709551544)'.

This is the root cause; its meaning:

Toggle snippet (5 lines)
scheme@(guile-user)> ,use(zstd)
scheme@(guile-user)> (error-name 18446744073709551544)
$23 = "Src size is incorrect"

Downloading and uncompressing the same thing works like this:

Toggle snippet (4 lines)
$ wget -qO - https://ci.guix.gnu.org/nar/zstd/rbb9h501zyf8mg1hz47plql80gsl99za-apr-1.7.0 | zstd -d |sha256sum
e15bd1d4f4628969c461d99e23d27d76fb0d77b709eb393b9b2b2bcac67a8b19 -

Likewise with Guile + Guile-zstd:

Toggle snippet (4 lines)
$ wget -qO - https://ci.guix.gnu.org/nar/zstd/rbb9h501zyf8mg1hz47plql80gsl99za-apr-1.7.0 | guile -c '(use-modules (zstd) (guix build utils)) (call-with-zstd-input-port (current-input-port) (lambda (port) (dump-port port (current-output-port))))' | sha256sum
e15bd1d4f4628969c461d99e23d27d76fb0d77b709eb393b9b2b2bcac67a8b19 -

So my guess is that the connection was closed early for some reason,
leading to a decompression error down the road.

Toggle quote (5 lines)
> guix pull: error: You found a bug: the program '/gnu/store/aaik6090bx4vdp9rn2g6w89296my5445-compute-guix-derivation'
> failed to compute the derivation for Guix (version: "128697d43c21eb229ff5413f1c4cf79ae1a9dcd4"; system: "x86_64-linux";
> host version: "1.3.0-1.771b866"; pull-version: 1).
> Please report the COMPLETE output above by email to <bug-guix@gnu.org>.

The bug here is that Guix should (1) handle transient networking issues
gracefully, and (2) retry downloads instead of aborting.

To be continued…

Thanks for reporting the issue!

Ludo’.
L
L
Ludovic Courtès wrote on 26 Jun 2022 08:29
control message for bug #56014
(address . control@debbugs.gnu.org)
871qvbsat0.fsf@gnu.org
retitle 56014 'guix substitute' crashes in zstd on transient networking issues
quit
L
L
Ludovic Courtès wrote on 3 Jul 2022 13:56
(address . control@debbugs.gnu.org)
877d4tzzi3.fsf@gnu.org
severity 56014 important
quit
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 56014@patchwise.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 56014
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch