guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#27553] [PATCH shepherd] Register SIGCHLD handler after primitive fo


From: Jelle Licht
Subject: [bug#27553] [PATCH shepherd] Register SIGCHLD handler after primitive fork
Date: Fri, 14 Jul 2017 14:19:12 +0200

Hi Ludo,

2017-07-12 23:34 GMT+02:00 Ludovic Courtès <address@hidden>:
Hi Jelle,

Jelle Licht <address@hidden> skribis:

> I am not sure if this is also the proper ML for the GNU Shepherd, but
> looking in the archives lead me to believe it actually is. If not, I
> suggest the gnu.org page for shepherd be updated with the correct info.

It’s the right list.  :-)
I am glad it turned out to be :-). Perhaps [1] can be updated to the same info as [2]?
 

> I recently starting playing around with user shepherd, and found out that
> when running a shepherd 0.3.2 daemonized as non-init process (via "(action
> 'shepherd 'daemonize)"), zombie processes are created whenever you start
> and subsequently stop any service.
>
> Thinking I did something wrong, I asked lfam on #guix to share his (very
> helpful) init.scm for user shepherd, yet I still noticed the same behaviour.
>
> I believe commit `efa2f45c5f7dc735407381b7b8a83d6c37f828db' inadvertently
> introduced an ordering issue, where the SIGCHLD handler is registered
> /before/ shepherd has the chance to daemonize. I believe the following
> trivial patch addresses this snafu.

The config file can start services, so the SIGCHLD handler must be
installed before we read the config file (otherwise we could be missing
some process termination notifications.)
What do you mean exactly? I think my config file does this, and I have not yet noticed this issue,
but I might just be confused about what you mean here.
 

Perhaps a solution would be to install the SIGCHLD handler lazily upon
the first ‘fork+exec-command’ call?  That would ensure both that (1)
users have a chance to daemonize before the handler is installed, and
(2) that the handler is installed before services are started.

Thoughts?
This seems like it would be for the best. I actually have no clue how to implement this though.
 
Regards,
Jelle

[1]: https://www.gnu.org/software/shepherd/
[2]: https://www.gnu.org/software/guix/about/#contact

reply via email to

[Prev in Thread] Current Thread [Next in Thread]