Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 9 Jun 2025 23:53:18 GMT
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 15e4b8d5ef84 - main - timeout(1): silence warnings for ESRCH
Message-ID:  <202506092353.559NrIWv006757@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=15e4b8d5ef845066819c4cbb5d03b63148688298

commit 15e4b8d5ef845066819c4cbb5d03b63148688298
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-06-07 11:24:32 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-06-09 23:51:06 +0000

    timeout(1): silence warnings for ESRCH
    
    It is possible for the child to become zombie and then there is nothing
    to signal.
    
    Reported and tested by: pho
    Reviewed by:    markj
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D50752
---
 bin/timeout/timeout.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/bin/timeout/timeout.c b/bin/timeout/timeout.c
index e9c4e22fc7d3..424e72dac9ad 100644
--- a/bin/timeout/timeout.c
+++ b/bin/timeout/timeout.c
@@ -188,16 +188,23 @@ static void
 send_sig(pid_t pid, int signo, bool foreground)
 {
 	struct procctl_reaper_kill rk;
+	int error;
 
 	logv("sending signal %s(%d) to command '%s'",
 	     sys_signame[signo], signo, command);
 	if (foreground) {
-		if (kill(pid, signo) == -1)
-			warnx("kill(%d, %s)", (int)pid, sys_signame[signo]);
+		if (kill(pid, signo) == -1) {
+			if (errno != ESRCH)
+				warnx("kill(%d, %s)", (int)pid,
+				    sys_signame[signo]);
+		}
 	} else {
 		memset(&rk, 0, sizeof(rk));
 		rk.rk_sig = signo;
-		if (procctl(P_PID, getpid(), PROC_REAP_KILL, &rk) == -1)
+		error = procctl(P_PID, getpid(), PROC_REAP_KILL, &rk);
+		if (error == 0 || (error == -1 && errno == ESRCH))
+			;
+		else if (error == -1)
 			warnx("procctl(PROC_REAP_KILL)");
 		else if (rk.rk_fpid > 0)
 			warnx("failed to signal some processes: first pid=%d",



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202506092353.559NrIWv006757>