* modules/shepherd/service.scm (spawn-service-controller): Add two asserts. This is the bug that causes `guix system reconfigure ...` to sometimes hang, and subsequently all shepherd commands, because a match-error flies out from the service-controller of a replaced service, and thus its fiber dies. --- modules/shepherd/service.scm | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/modules/shepherd/service.scm b/modules/shepherd/service.scm index c3bdf44..0ee6929 100644 --- a/modules/shepherd/service.scm +++ b/modules/shepherd/service.scm @@ -382,9 +382,11 @@ denoting what the service provides." (define (spawn-service-controller service) "Return a channel over which @var{service} may be controlled." + (assert (current-process-monitor)) (let ((channel (make-channel))) (spawn-fiber (lambda () + (assert (current-process-monitor)) ;; The controller writes to its current output port via 'local-output'. ;; Make sure that goes to the right port. If the controller got a ;; wrong output port, it could crash and stop responding just because a -- 2.41.0