Subject: Re: bug#38062: Offloading + timeout + --keep-going leads to assertion failure
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Date: Mon, 04 Nov 2019 23:38:12 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

Ludovic Courtès <[email-masked]> skribis:

> An offloaded build that times out in the presence of ‘--keep-going’
> leads to an assertion failure.  To reproduce, set up offloading and run
> something like this:
>
> $ guix build vim --no-substitutes --timeout=5 --keep-going
> The following derivation will be built:
>    /gnu/store/5mnnym9xwl145s1b88aqfmrka810w9ci-vim-8.1.0644.drv
> process 4277 acquired build slot '/var/guix/offload/localhost:2222/0'
> load on machine 'localhost' is 0.04 (normalized: 0.01)
> building /gnu/store/5mnnym9xwl145s1b88aqfmrka810w9ci-vim-8.1.0644.drv...
> sending 1 store item (48 MiB) to 'localhost'...
> exporting path `/gnu/store/mlwyk5vcja0gqm20xxj8mwgf0fbqv8cz-vim-8.1.0644-checkout'
> building of `/gnu/store/5mnnym9xwl145s1b88aqfmrka810w9ci-vim-8.1.0644.drv' timed out after 5 seconds
> build of /gnu/store/5mnnym9xwl145s1b88aqfmrka810w9ci-vim-8.1.0644.drv failed
> View build log at '/var/log/guix/drvs/5m/nnym9xwl145s1b88aqfmrka810w9ci-vim-8.1.0644.drv.bz2'.
> guix build: error: corrupt input while restoring archive from #<closed: file 7ff2769cdc40>
>
>
> The last error is due to premature EOF on the client socket: the child
> ‘guix-daemon’ process crashed, and thus ‘guix build’ gets EPIPE on its
> client socket.  Here’s how the ‘guix-daemon’ process crashed:
>
> $ tail -3 /var/log/guix-daemon.log
> accepted connection from pid 4270, user ludo
> accepted connection from pid 4277, user root
> guix-daemon: nix/libstore/build.cc:3448: void nix::Worker::run(const Goals&): Assertion `!settings.keepGoing || children.empty()' failed.

Fixed by af73beeba1fc9effab60b11aea1d7ed8c24e7367.

I’ll update the ‘guix’ package soonish.

Ludo’.