git: 803f686938ec - main - rc: virtual_oss: Wait for process to exit
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 28 May 2026 14:07:01 UTC
The branch main has been updated by christos:
URL: https://cgit.FreeBSD.org/src/commit/?id=803f686938ec2472d54a26bff668e48cc4999558
commit 803f686938ec2472d54a26bff668e48cc4999558
Author: Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2026-05-21 16:26:46 +0000
Commit: Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2026-05-28 14:06:06 +0000
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
---
libexec/rc/rc.d/virtual_oss | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
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