aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches/ngircd-handle-zombies.patch
blob: 99475ba0966795144932bac7fc18dea0ffcc1b00 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
The Guile process taking the role of PID 1 during Guix builds does not reap
zombie processes, which makes them continue responding to "kill -0".

--- a/src/testsuite/stop-server.sh	2015-02-05 11:24:00.535908842 +0100
+++ b/src/testsuite/stop-server.sh	2015-02-05 11:25:00.264351349 +0100
@@ -1,6 +1,21 @@
 #!/bin/sh
 # ngIRCd Test Suite
 
+process_is_alive(){
+    ! process_is_dead "$1" && ! process_is_undead "$1"
+}
+
+process_is_dead(){
+    ! kill -0 "$1"
+}
+
+process_is_undead(){
+    case $(ps -p "$1" -o state=) in
+        (Z*) true ;;
+        (*) false ;;
+    esac
+}
+
 [ -z "$srcdir" ] && srcdir=`dirname $0`
 
 # read in functions
@@ -24,7 +40,7 @@
 
 # waiting ...
 for i in 1 2 3 4 5; do
-  kill -0 $pid > /dev/null 2>&1; r=$?
+  process_is_alive $pid > /dev/null 2>&1; r=$?
   if [ $r -ne 0 ]; then
     echo " ok".
     exit 0
): New macro. (wait-for-readable-fd): Add cooperative implementation when Fibers is in use. (secret-service-send-secrets): Define 'sleep' so that it cooperates when Fibers is in use. Ludovic Courtès 2022-04-07secret-service: Abstract 'wait-for-readable-fd'....* gnu/build/secret-service.scm (wait-for-readable-fd): New procedure. (secret-service-send-secrets): Use it instead of 'select'. Ludovic Courtès 2021-12-12services: secret-service: Turn into a Shepherd service....* gnu/services/virtualization.scm (secret-service-activation): Remove. (secret-service-shepherd-services): New procedure. (secret-service-type)[extensions]: Remove ACTIVATION-SERVICE-TYPE extension. Add SHEPHERD-ROOT-SERVICE-TYPE and USER-PROCESSES-SERVICE-TYPE extensions. * gnu/build/secret-service.scm (delete-file*): New procedure. (secret-service-receive-secrets): Use it. Ludovic Courtès