Hi Ludo, 2017-07-12 23:34 GMT+02:00 Ludovic Courtès : > Hi Jelle, > > Jelle Licht 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