Subject: bug#40428: Cannot use inferiors in manifest

From: Marius Bakke <[email-masked]>
Date: Sat, 04 Apr 2020 17:20:31 +0200

Hello,

On the current 'master' branch, using an inferior in a manifest will
cause a crash in 'compute-guix-derivation' as reported in
<https://lists.gnu.org/archive/html/help-guix/2020-04/msg00010.html>.

It can be reproduced by taking the inferior example from the manual:
https://guix.gnu.org/manual/en/guix.html#Inferiors

..and running 'guix build --no-grafts -n -m inferior-example.scm'.

I've attempted to bisect it, but it is difficult because once you have
successfully passed 'compute-guix-derivation', the problem is no longer
reproducible, even on known "bad" commits.  So for every successful test
a new commit/channel must be chosen.

Here is a backtrace from a bad commit:

Backtrace:
In ice-9/boot-9.scm:
    152:2 19 (with-fluid* _ _ _)
    152:2 18 (with-fluid* _ _ _)
    142:2 17 (dynamic-wind _ _ #<procedure 7fe4c47d3020 at ice-9/eva…>)
    829:9 16 (catch _ _ #<procedure 7fe4c47dd540 at ice-9/eval.scm:…> …)
    829:9 15 (catch _ _ #<procedure 7fe4c443eb70 at ice-9/eval.scm:…> …)
    152:2 14 (with-fluid* _ _ _)
    152:2 13 (with-fluid* _ _ _)
    142:2 12 (dynamic-wind _ _ #<procedure 7fe4c4006b00 at ice-9/eva…>)
    152:2 11 (with-fluid* _ _ _)
    152:2 10 (with-fluid* _ _ _)
    152:2  9 (with-fluid* _ _ _)
    705:2  8 (call-with-prompt ("build handler") #<procedure 7fe497…> …)
In unknown file:
           7 (_ #<procedure 7fe497a71020 at ice-9/eval.scm:330:13 ()> …)
In ice-9/eval.scm:
    619:8  6 (_ #(#(#(#<directory (guix ui) 7fe4c699f960>) #<s…> …) …))
   626:19  5 (_ #(#(#(#<directory (guix ui) 7fe4c699f960>) #<s…> …) …))
In guix/derivations.scm:
    357:5  4 (substitution-oracle #<store-connection 256.99 7fe4b6b…> …)
   329:16  3 (derivation-input-fold #<procedure 7fe4c4bfc868 at gui…> …)
In ice-9/eval.scm:
    619:8  2 (_ #(#(#(#(#<directory (guix store) 7fe4c68d3…>) …) …) …))
    619:8  1 (_ #(#(#<directory (guix store) 7fe4c68d3c80> #<var…> …)))
In unknown file:
           0 (put-bytevector #<closed: file 7fe4c3a77620> #vu8(1 0 …) …)

ERROR: In procedure put-bytevector:
In procedure put-bytevector: Wrong type argument in position 1 (expecting open output port): #<closed: file 7fe4c3a77620>