From nobody Wed Apr 16 19:46:32 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZdBNn2SzTz5t8ky; Wed, 16 Apr 2025 19:46:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZdBNm60GKz3ktq; Wed, 16 Apr 2025 19:46:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744832792; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QJUJ94r7BnTP+BgF9ORLrh9yk3rZ6Nlm+KiuDirGgtU=; b=Tx8pf6Mdlz3UmpZH3UthrHaU87YWPAxDZIaXyGiR7jaW5dUFV8VVE0fEAsLvFosnqQVpQ3 wmQ+wU1RCL3aCHR2QKtYlnIt7AKNS6WKe/hJ/NKRWEe6KagdHUeNJX/GRiXUU5CJrBgBE1 e4du6fFnYcaZYg7o8Ubs2MJhVI1pDupAKIkJXdIjM6aYOjup7Nbhpg98AUZXQHiLDsgtCX 92KwA7C8JfnLsG8rGfxOkDnhk55OR1M6SZEW7g+bIiwlc7FJKrcDBK5YpLbXG8buKCNL5i mWV1g8rNuO9UohO/mPWgpiSTCBQSPlXWVA+32b5jrro1woUPZTsLxAQPHk/DHQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1744832792; a=rsa-sha256; cv=none; b=hKg2yMnNW1cw8W0fL5hY6W+xUcgv1tOuE5pYqKa8a/crKKO/noPXe84VLhC07bo/ib06QQ m7ZSySsaNHTDORctgcwOze7qXxXkrsZFIYRkYPsWro0mVjsV+OOQ8916dQWPBNHVKF1Wzg oBj2vIow6eZ525/9wYd36kY8grmdnT3uLdZS4HVo74FUKljng6+tTLl6VHPwXK0cMYkjUy ELvZFNaWHWStLUDPqU9iFru6LVJx/HDeFeMVnIJKcLhC+/kZNYZ8nSLBXLoT/n5sYlYy6x Z/8fO8guZDjEnpAW4jB9ceh/2eEEQgwvl5FPVa5Pl7/kgsYnZ45v856CJwbLDQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744832792; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QJUJ94r7BnTP+BgF9ORLrh9yk3rZ6Nlm+KiuDirGgtU=; b=fq4oYA8mJknqHtrrrFognHtQXf1t6IyH59+h2i/qREq9cCsnJxtLgGuWrKYCajuX4mSlE7 9rED3qfbK+k3rVQwpS5++yjQd5l1Cg6LFxOnkGBvTBK7et5MtHnW6Jfn7Z7NiYZuvxivdf tuUsKrQFaY6P/LjQ97U7UqGnNCnLaTFMpoDMZDVTV6UalqVZ9dzEr8rQ2AAnQXpa9zC+ey 3zruXSNaPtbZm/Q8Q4wJ8Ba1noGpd5uX9A6ip6eJpqbYDkNljhk222AqWBfOKzsXgMWgxq S1j1O0HYNe75ABM6xa/p6xmFxcl+DR/M3UmHUIRm5R1cn2HsXdQn7Fq0704JPA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZdBNm5YtJz2Fv; Wed, 16 Apr 2025 19:46:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 53GJkWoD063780; Wed, 16 Apr 2025 19:46:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53GJkWUM063777; Wed, 16 Apr 2025 19:46:32 GMT (envelope-from git) Date: Wed, 16 Apr 2025 19:46:32 GMT Message-Id: <202504161946.53GJkWUM063777@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Baptiste Daroussin Subject: git: 06c74693c286 - main - timeout(1): Also send SIGCONT because the child may be stopped List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 06c74693c286185f299410afcd312fc54a96a052 Auto-Submitted: auto-generated The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=06c74693c286185f299410afcd312fc54a96a052 commit 06c74693c286185f299410afcd312fc54a96a052 Author: Aaron LI AuthorDate: 2025-04-02 16:01:17 +0000 Commit: Baptiste Daroussin CommitDate: 2025-04-16 19:45:38 +0000 timeout(1): Also send SIGCONT because the child may be stopped The POSIX.1-2024 says: "If the subsequent wait status of the child process shows that it was stopped by a signal, a SIGCONT signal shall also be sent in the same manner as the first signal; otherwise, a SIGCONT signal may be sent in the same manner." As it's allowed by the standard, we just always send the SIGCONT signal to the child process regardless of its stop state, so that timeout could terminate a stopped child. Obtained-from: DragonFly BSD Reference: https://pubs.opengroup.org/onlinepubs/9799919799/utilities/timeout.html --- bin/timeout/timeout.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/bin/timeout/timeout.c b/bin/timeout/timeout.c index 8f933f509407..e702803a25c2 100644 --- a/bin/timeout/timeout.c +++ b/bin/timeout/timeout.c @@ -179,6 +179,24 @@ send_sig(pid_t pid, int signo, bool foreground) (int)rk.rk_fpid); logv("signaled %u processes", rk.rk_killed); } + + /* + * If the child process was stopped by a signal, POSIX.1-2024 + * requires to send a SIGCONT signal. However, the standard also + * allows to send a SIGCONT regardless of the stop state, as we + * are doing here. + */ + if (signo != SIGKILL && signo != SIGSTOP && signo != SIGCONT) { + logv("sending signal %s(%d) to command '%s'", + sys_signame[SIGCONT], SIGCONT, command); + if (foreground) { + kill(pid, SIGCONT); + } else { + memset(&rk, 0, sizeof(rk)); + rk.rk_sig = SIGCONT; + procctl(P_PID, getpid(), PROC_REAP_KILL, &rk); + } + } } static void