cuirass: Fail to fetch "guix" input.

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Mathieu Othacehe
Owner
unassigned
Submitted by
Mathieu Othacehe
Severity
normal
M
M
Mathieu Othacehe wrote on 2 Oct 2020 11:55
(address . bug-guix@gnu.org)
87v9ft6jfa.fsf@gnu.org
Hello,

Running local tests, I have the following error:

Toggle snippet (28 lines)
2020-10-02T11:54:09 fatal: uncaught exception 'misc-error' in 'build' fiber!
2020-10-02T11:54:09 exception arguments: (#f "Attempt to suspend fiber within continuation barrier" () #f)
In ice-9/boot-9.scm:
1731:15 13 (with-exception-handler #<procedure 7f4eb362df60 at ic?> ?)
1736:10 12 (with-exception-handler _ _ #:unwind? _ # _)
152:2 11 (with-fluid* _ _ _)
718:2 10 (call-with-prompt ("break") #<procedure 7f4eb76adb60 a?> ?)
718:2 9 (call-with-prompt ("continue") #<procedure 7f4eb76ad14?> ?)
In ice-9/eval.scm:
619:8 8 (_ #(#(#<directory (guile-user) 7f4eb72d7f00> #<var?> ?)))
In srfi/srfi-1.scm:
634:9 7 (for-each #<procedure 7f4eb3750660 at cuirass/base.scm?> ?)
In ice-9/boot-9.scm:
1731:15 6 (with-exception-handler #<procedure 7f4eb3673ba0 at ic?> ?)
1669:16 5 (raise-exception _ #:continuable? _)
1764:13 4 (_ #<&compound-exception components: (#<&error> #<&orig?>)
In cuirass/utils.scm:
240:8 3 (_ _ . _)
In ice-9/boot-9.scm:
1731:15 2 (with-exception-handler #<procedure 7f4eb7616480 at ic?> ?)
In cuirass/utils.scm:
241:22 1 (_)
In unknown file:
0 (make-stack #t)
ERROR: In procedure make-stack:
Attempt to suspend fiber within continuation barrier

the specification is:

Toggle snippet (22 lines)
(define manifest
'((#:name . "my-manifest")
(#:load-path-inputs . ("guix"))
(#:package-path-inputs . ())
(#:proc-input . "guix")
(#:proc-file . "build-aux/cuirass/gnu-system.scm")
(#:proc . cuirass-jobs)
(#:proc-args (subset . "all"))
(#:inputs . (((#:name . "guix")
(#:url . "git://git.savannah.gnu.org/guix.git")
(#:load-path . ".")
(#:branch . "master")
(#:no-compile? . #t))
((#:name . "guix2")
(#:url . "git://git.savannah.gnu.org/guix.git")
(#:load-path . ".")
(#:branch . "master")
(#:no-compile? . #t))))
(#:build-outputs . ())))
(list manifest)

It looks like adding a second input, creates an exception during inputs
fetching.

Thanks,

Mathieu

--
M
M
Mathieu Othacehe wrote on 3 Oct 2020 11:16
(address . 43757-done@debbugs.gnu.org)
87h7rbisa6.fsf@gnu.org
Hello,

Toggle quote (3 lines)
> ERROR: In procedure make-stack:
> Attempt to suspend fiber within continuation barrier

Turns out "par-map" call does not seem suspendable, even though I'm not
sure why. Maybe Ludo can help here :) ?

This is fixed with: 761443bca6178b4ac299a8bd368d1cac4abda5f8.

Thanks,

Mathieu
Closed
L
L
Ludovic Courtès wrote on 3 Oct 2020 14:00
(name . Mathieu Othacehe)(address . othacehe@gnu.org)
87k0w7frit.fsf@gnu.org
Hi,

Mathieu Othacehe <othacehe@gnu.org> skribis:

Toggle quote (6 lines)
>> ERROR: In procedure make-stack:
>> Attempt to suspend fiber within continuation barrier
>
> Turns out "par-map" call does not seem suspendable, even though I'm not
> sure why. Maybe Ludo can help here :) ?

‘par-map’ is implemented in terms of futures, and futures use their own
thread pool. What’s likely to block is ‘touch’: it essentially waits on
a condition variable, which Fibers cannot interrupt.

I’d say that mixing fibers and ‘par-map’ is a bad idea. :-)

If we need such a thing, I think we should implement it on top of
Fibers. Implementing futures on top of fibers + channels should be
easier than what (ice-9 futures) does.

Toggle quote (2 lines)
> This is fixed with: 761443bca6178b4ac299a8bd368d1cac4abda5f8.

Why not just replace ‘par-map’ with ‘map’? That sounds easier and I
suspect it doesn’t change much performance-wise.

(There’s a 2nd use of ‘par-map’ in that file.)

Thanks,
Ludo’.
Closed
M
M
Mathieu Othacehe wrote on 3 Oct 2020 15:14
(name . Ludovic Courtès)(address . ludo@gnu.org)
875z7rih9a.fsf@gnu.org
Hey Ludo,

Toggle quote (4 lines)
> ‘par-map’ is implemented in terms of futures, and futures use their own
> thread pool. What’s likely to block is ‘touch’: it essentially waits on
> a condition variable, which Fibers cannot interrupt.

I see, thanks for explaining.

Toggle quote (3 lines)
> Why not just replace ‘par-map’ with ‘map’? That sounds easier and I
> suspect it doesn’t change much performance-wise.

The objective was to still be able to run parallel input fetching, but
you're right, a simple "map" is nicer.

Toggle quote (2 lines)
> (There’s a 2nd use of ‘par-map’ in that file.)

Oh! Fixed too.

Thanks for the quick answer,

Mathieu
Closed
?