guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 74366285f0241a776b650cae26578c5390c98a3e
Author: Yelninei <[email protected]>
AuthorDate: Sat Dec 13 18:25:23 2025 +0000

    gnu: hurd: Prevent zombie processes.
    
    Fixes: shepherd/shepherd#93
    
    * gnu/packages/patches/hurd-proc-zombies.patch: new patch.
    * gnu/local.mk (dist_patch_DATA): Register it.
    * gnu/packages/hurd.scm (hurd): Add patch.
    
    Change-Id: Iddab14fcd487817cde7aa2f7fd047e943d9337d1
    Signed-off-by: Ludovic Courtès <[email protected]>
    Merges: #4822
---
 gnu/local.mk                                 |  1 +
 gnu/packages/hurd.scm                        |  3 ++-
 gnu/packages/patches/hurd-proc-zombies.patch | 28 ++++++++++++++++++++++++++++
 3 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 5db831f0af..eac1752680 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1594,6 +1594,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/hurd-refcounts-assert.patch             \
   %D%/packages/patches/hurd-rumpdisk-no-hd.patch               \
   %D%/packages/patches/hurd-startup.patch                      \
+  %D%/packages/patches/hurd-proc-zombies.patch                 \
   %D%/packages/patches/hwloc-1-test-btrfs.patch                        \
   %D%/packages/patches/i3lock-blur-fix-build-on-gcc-10.patch   \
   %D%/packages/patches/i7z-gcc-10.patch                                \
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 20bbc6c14e..af87700c86 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -344,7 +344,8 @@ Hurd-minimal package which are needed for both glibc and 
GCC.")
               (inherit (package-source hurd-headers))
               (patches (search-patches "hurd-refcounts-assert.patch"
                                        "hurd-rumpdisk-no-hd.patch"
-                                       "hurd-startup.patch"))))
+                                       "hurd-startup.patch"
+                                       "hurd-proc-zombies.patch"))))
     (version (package-version hurd-headers))
     (arguments
      `(#:tests? #f                      ;no "check" target
diff --git a/gnu/packages/patches/hurd-proc-zombies.patch 
b/gnu/packages/patches/hurd-proc-zombies.patch
new file mode 100644
index 0000000000..ecc50ec4e4
--- /dev/null
+++ b/gnu/packages/patches/hurd-proc-zombies.patch
@@ -0,0 +1,28 @@
+Upstream status: 
https://lists.gnu.org/archive/html/bug-hurd/2025-12/msg00019.html
+
+From 382c796742dad624d958ac283a7fb10960c742b1 Mon Sep 17 00:00:00 2001
+From: Yelninei <[email protected]>
+Date: Sat, 13 Dec 2025 17:55:08 +0000
+Subject: [PATCH] proc: Also check whether the last child is already dead.
+
+* proc/mgt.c (process_has_exited): Repeat check for the last child too.
+---
+ proc/mgt.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/proc/mgt.c b/proc/mgt.c
+index 3f04e2ba..dcb619af 100644
+--- a/proc/mgt.c
++++ b/proc/mgt.c
+@@ -1102,6 +1102,8 @@ process_has_exited (struct proc *p)
+                               1, tp->p_pgrp->pg_pgid,
+                               !tp->p_pgrp->pg_orphcnt);
+       tp->p_parent = reparent_to;
++      if (tp->p_dead)
++      isdead = 1;
+ 
+       /* And now append the lists. */
+       tp->p_sib = reparent_to->p_ochild;
+-- 
+2.52.0
+

Reply via email to