diff options
| author | Christos Margiolis <christos@FreeBSD.org> | 2026-05-21 16:26:46 +0000 |
|---|---|---|
| committer | Christos Margiolis <christos@FreeBSD.org> | 2026-05-28 14:06:06 +0000 |
| commit | 803f686938ec2472d54a26bff668e48cc4999558 (patch) | |
| tree | 41a742c9015a7ac73c172b8fc96bdbd9538b6f4b | |
| parent | a576e5140ef352af6cf227528d1bfc6b964516c8 (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_oss | 4 |
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 |
