aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristos Margiolis <christos@FreeBSD.org>2026-05-21 16:26:46 +0000
committerChristos Margiolis <christos@FreeBSD.org>2026-05-28 14:06:06 +0000
commit803f686938ec2472d54a26bff668e48cc4999558 (patch)
tree41a742c9015a7ac73c172b8fc96bdbd9538b6f4b
parenta576e5140ef352af6cf227528d1bfc6b964516c8 (diff)
rc: virtual_oss: Wait for process to exit
Sometimes virtual_oss processes do not exit immediatelly. If we do not wait for the processes to fully exit before returning from virtual_oss_stop(), then the service restart operation might call virtual_oss_start() too early and fail, because it will think the service wasn't stopped and is still running. Reported by: jrm Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: 0mp, jrm Pull-Request: https://ron-dev.freebsd.org/FreeBSD/src/pulls/33
-rw-r--r--libexec/rc/rc.d/virtual_oss4
1 files changed, 3 insertions, 1 deletions
diff --git a/libexec/rc/rc.d/virtual_oss b/libexec/rc/rc.d/virtual_oss
index 07f81aeed4bc..dd3bbe41c094 100644
--- a/libexec/rc/rc.d/virtual_oss
+++ b/libexec/rc/rc.d/virtual_oss
@@ -76,8 +76,10 @@ stop_instance()
if [ -z "${instance_args}" ]; then
warn "no such config: ${config}"
else
+ pid="$(cat "${pidpath}/${config}.pid")"
startmsg -n "Stopping virtual_oss config: ${config}: "
- kill "$(cat "${pidpath}/${config}.pid")"
+ kill "${pid}"
+ pwait "${pid}"
rm -f "${pidpath}/${config}.pid"
startmsg "done"
fi