Subject: bug#58485: [shepherd] Restarting guix-publish fails

From: Ludovic Courtès <[email-masked]>
Date: Mon, 20 Feb 2023 11:20:10 +0100

Hi Lars,

Lars-Dominik Braun <[email-masked]> skribis:

>> Indeed.  This is fixed by Shepherd commit
>> d97592f58603ff51cb280ae57d413c8731e601b3, which will be in the upcoming
>> 0.9.3 release.
> I’m on 0.9.3 and it works fine with `herd restart` now. But ssh-daemon
> has the same issue when being restarted by unattended-upgrades (which
> is fatal, because unable to use SSH I have to restart the entire box):
>
> ---snip---
> shepherd: Service nginx has been stopped.
> shepherd: Service nginx has been started.
> shepherd: Service collectd has been stopped.
> shepherd: Service collectd has been started.
> shepherd: Service ntpd has been stopped.
> shepherd: Service ntpd has been started.
> shepherd: Service guix-publish has been stopped.
> shepherd: Service guix-publish has been started.
> shepherd: Service ssh-daemon has been stopped.
> Backtrace:
>            7 (primitive-load "/gnu/store/ip5m1n8kb6p0rfglzpkk17k060a?")
> In ice-9/boot-9.scm:
>     724:2  6 (call-with-prompt ("prompt") #<procedure 7f89a11f3840 ?> ?)
>   1752:10  5 (with-exception-handler _ _ #:unwind? _ # _)
> In ice-9/eval.scm:
>     619:8  4 (_ #(#(#<directory (guile-user) 7f89a11ffc80>)))
> In ice-9/boot-9.scm:
>    260:13  3 (for-each #<procedure restart-service (name)> _)
> In gnu/services/herd.scm:
>     168:4  2 (invoke-action ssh-daemon restart () #<procedure 7f89a0?>)
>     176:7  1 (failure)
> In ice-9/boot-9.scm:
>   1685:16  0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> ERROR:
>   1. &action-exception-error:
>       service: ssh-daemon
>       action: start
>       key: system-error
>       args: ("bind" "~A" ("Address already in use") (98)
> ---snap---
>
> Maybe I can strace herd and see what happens exactly.

Can you confirm shepherd (PID 1) is 0.9.3?

‘sudo herd restart ssh-daemon’ works fine on my laptop FWIW.

Note that the situation is different from that of ‘guix publish’: here
it’s inetd style, as opposed to systemd style for ‘guix publish’.

Thanks,
Ludo’.