aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2025-09-23 12:55:56 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2025-09-23 12:55:56 +0000
commit5953e7c98427e038500221e885dffa181dcc064b (patch)
tree401c4e660375fcc1c2d1b1d121b7caed354cd013
parent99475087d63b4602a0213645bc17d82c3946e2fd (diff)
rc.subr: Move the sleep in wait_for_pids
Instead of sleeping while constructing the list of PIDs to wait for, sleep briefly after pwait to give init a chance to reap the processes that just terminated before we loop around and start probing them. PR: 289630 Reviewed by: allanjude Differential Revision: https://reviews.freebsd.org/D52619
-rw-r--r--libexec/rc/rc.subr5
1 files changed, 4 insertions, 1 deletions
diff --git a/libexec/rc/rc.subr b/libexec/rc/rc.subr
index 06b1bd51384c..6be226021949 100644
--- a/libexec/rc/rc.subr
+++ b/libexec/rc/rc.subr
@@ -804,7 +804,6 @@ wait_for_pids()
for _j in $_list; do
if kill -0 $_j 2>/dev/null; then
_nlist="${_nlist}${_nlist:+ }$_j"
- [ -n "$_prefix" ] && sleep 1
fi
done
if [ -z "$_nlist" ]; then
@@ -814,6 +813,10 @@ wait_for_pids()
echo -n ${_prefix:-"Waiting for PIDS: "}$_list
_prefix=", "
pwait -o $_list 2>/dev/null
+ # At least one of the processes we were waiting for
+ # has terminated. Give init a chance to collect it
+ # before looping around and checking again.
+ sleep 1
done
if [ -n "$_prefix" ]; then
echo "."