GNU bug report logs - #48521
opendht-service-type hangs Shepherd at boot

Previous Next

Package: guix;

Reported by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Date: Wed, 19 May 2021 12:00:02 UTC

Severity: normal

Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 48521 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: 48521 <at> debbugs.gnu.org
Subject: Re: bug#48521: opendht-service-type hangs Shepherd at boot
Date: Wed, 19 May 2021 17:36:38 -0400
Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:

> Hello,
>
> I just noticed about this problem following a reboot.  I can also
> reproduce it in 'guix system vm', simply adding the opendht-service-type
> to my operating-system declaration.
>
> The boot proceeds until 'error in finalization thread: Success' then
> hangs indefinitely.
>
> What is troubling for me is that the service is rather straightforwardly
> defined.  It uses the make-forkexec-constructor/container like so:
>
> (define (opendht-shepherd-service config)
>   "Return a <shepherd-service> running OpenDHT."
>   (shepherd-service
>    (documentation "Run an OpenDHT node.")
>    (provision '(opendht dhtnode dhtproxy))
>    (requirement '(user-processes syslogd))
>    (start #~(make-forkexec-constructor/container
>              (list #$@(opendht-configuration->command-line-arguments config))
>              #:mappings (list (file-system-mapping
>                                (source "/dev/log") ;for syslog
>                                (target source)))
>              #:user "opendht"))
>    (stop #~(make-kill-destructor))))
>
> I'm not sure how using such basic building blocks could lead to a hang
> in Shepherd ?

After much trial and error, the service can be made to not hang Shepherd
with the removal of the mappings argument:

--8<---------------cut here---------------start------------->8---
modified   gnu/services/networking.scm
@@ -845,9 +845,9 @@ CONFIG, an <opendht-configuration> object."
    (requirement '(user-processes networking syslogd))
    (start #~(make-forkexec-constructor/container
              (list #$@(opendht-configuration->command-line-arguments config))
-             #:mappings (list (file-system-mapping
-                               (source "/dev/log") ;for syslog
-                               (target source)))
+             ;; #:mappings (list (file-system-mapping
+             ;;                   (source "/dev/log") ;for syslog
+             ;;                   (target source)))
              #:user "opendht"))
    (stop #~(make-kill-destructor))))
--8<---------------cut here---------------end--------------->8---

I have no idea why that is, but given that the tor-service-type does the
same thing, I can only conclude that it is some strange interaction
between dhtnode and syslog.

The above fixes the hang, but breaks logging to syslog.

Ideas?

Maxim




This bug report was last modified 4 years and 1 day ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.