shepherd: 'read-pid-file/container' terminates the whole process group.
authorLudovic Courtès <ludo@gnu.org>
Thu, 11 Jun 2020 22:03:07 +0000 (00:03 +0200)
committerLudovic Courtès <ludo@gnu.org>
Thu, 11 Jun 2020 22:04:42 +0000 (00:04 +0200)
This mirrors a change made in the Shepherd 0.8.0.  Previously, upon
startup failure, we could have left processes behind.

* gnu/build/shepherd.scm (read-pid-file/container): Kill (- PID) instead
of PID.

gnu/build/shepherd.scm

index 47920a7..fd93e7f 100644 (file)
@@ -105,7 +105,8 @@ separate mount and PID name space.  Return the \"outer\" PID. "
              (read-pid-file pid-file
                             #:max-delay max-delay)))
     (#f
-     (catch-system-error (kill pid SIGTERM))
+     ;; Send SIGTERM to the whole process group.
+     (catch-system-error (kill (- pid) SIGTERM))
      #f)
     ((? integer? container-pid)
      ;; XXX: When COMMAND is started in a separate PID namespace, its