summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mailman/bin/master.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mailman/bin/master.py b/src/mailman/bin/master.py
index 0b273d332..a23fb8e0b 100644
--- a/src/mailman/bin/master.py
+++ b/src/mailman/bin/master.py
@@ -188,6 +188,9 @@ class PIDWatcher:
def __init__(self):
self._pids = {}
+ def __contains__(self, pid):
+ return pid in self._pids.keys()
+
def __iter__(self):
# Safely iterate over all the keys in the dictionary. Because
# asynchronous signals are involved, the dictionary's size could
@@ -402,6 +405,10 @@ class Loop:
except InterruptedError: # pragma: nocover
# If the system call got interrupted, just restart it.
continue
+ if pid not in self._kids:
+ # Not a runner subprocess, maybe a plugin started one
+ # ignore it
+ continue
# Find out why the subprocess exited by getting the signal
# received or exit status.
if os.WIFSIGNALED(status):