From nobody Wed Mar 11 13:16:39 2026 X-Original-To: dev-commits-src-all@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 4fWB940kcHz6V9Cx for ; Wed, 11 Mar 2026 13:16:40 +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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fWB936d11z49FY for ; Wed, 11 Mar 2026 13:16:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773235000; 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=kiM76rDd+YLgKTUk9AnnkRW8sWLmS62bkg5bERT+3kc=; b=yNWuF0ByPelx1OsENFmfmywtA0DcucdSeeJIam7Bfhqdu8CnA1bSbmkL0BQdSfJTFTpoqo GFldmw67qWEpjPx5fIPbLgkwDhbK42SVfw3ItFArsYz4PYS/oIxLYqvMA/+1XQnWZFZrbY ivpiIX58F7l0CGhZA7jz5eOG2aQ+mhkEMwZx3ww09Qol3tj786Z3q275eTPtAzveBHQ7vw LwSl9d4/tn3OH+T54LtGup5Av9Xh96noEgm4dwDiQ/4JH6eSZAhC4bp/1kcD+dM43+Rgrp krIL+isPvRULFNNMSrb+gxzE2QTjuBFEEYHFGICfOwzk5ndnQ5lLiA2Kd4JxpQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1773235000; a=rsa-sha256; cv=none; b=x+VR97BybKDuAOp8PgnalPXLulGAv7N8gueWz2hOkVY0nVf9gm3jdI1T1U2J4zkPiiRJFL cLb1TwbSNdF9Lx2msXBYJ4RTLiaQH5TeFj9L9CVwjQOLcBaQ5rt+3oDh0zGNAtg6rotkbg OIldn3eWaxVXCdI9qxAAfXHbYvD3ibkF+fDvlzvOCjV+thcM808iWfhf/xjB8PbwVcWQwn 57sMZv7Rv5GYbXUdtEJpY2/dvN6Dw9X+AWVSqePS4huE/FiBzJ6dgFPy55l1QU1utroEE5 3LNtniyZif2zebc38XqJ1FTWZ9PG9MdMIdm27ixW6SuoDrPk7HmwSUpnO9bGGw== 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=1773235000; 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=kiM76rDd+YLgKTUk9AnnkRW8sWLmS62bkg5bERT+3kc=; b=yJvRHrHaDBEl4kaapDAlfTxmYTr3u7LrWyEwqrBaGH6U1LkGnxGUsUxcBPT8tiYHW49ufY nd859wLN14fNvPgkglc81Tq8SC4+WHHVHuch9YnN6+TGGA2T0QWrCQpjjev1wVznQlJBxt B+fGjLmn014w7WvFKf2DHz7GdDYfyX5WVB59UTpPZ6UdX63aSnQti+5VUzjlGifX7ErNNo uy/0anxx6aMZIlQKSkOYu9/rXUQpcvFSYNJDV0wTZKv6eug5lz3zoC4BQSpJ5a3aFcwliy 3jdgU2HsusyH9VZ6jDhPl0Dz1R0RjAAj83jicKfa70TqP0AbjdXy2Z9igiRI6g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fWB936D40z10Zm for ; Wed, 11 Mar 2026 13:16:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 25ac0 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 11 Mar 2026 13:16:39 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: c4c375354287 - stable/15 - system(3): Address test robustness issue List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: c4c375354287d6eb9fa71ebb5d9fd6a765faf795 Auto-Submitted: auto-generated Date: Wed, 11 Mar 2026 13:16:39 +0000 Message-Id: <69b16b37.25ac0.41aa2574@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=c4c375354287d6eb9fa71ebb5d9fd6a765faf795 commit c4c375354287d6eb9fa71ebb5d9fd6a765faf795 Author: Dag-Erling Smørgrav AuthorDate: 2026-03-09 20:41:04 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-03-11 13:16:10 +0000 system(3): Address test robustness issue Don't assume that SIGINT and SIGQUIT are set to SIG_DFL at the start of the test. Instead, retrieve their current dispositions and verify that they are restored at the end of the test. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D55709 (cherry picked from commit 48368f702423742b2a7dff7ad3191625e8bf26f0) system(3): Fix brain glitch in previous commit We were saving SIGINT twice instead of SIGINT and SIGQUIT. Also restore original order of operations (SIGINT then SIGQUIT), which matches the order in which they're discussed in the POSIX description of system(3). MFC after: 1 week Sponsored by: Klara, Inc. Fixes: 48368f702423 ("system(3): Address test robustness issue") (cherry picked from commit 863b5c137a98d29dc6964cba0e0c4fe2a8bebab8) --- lib/libc/tests/stdlib/system_test.c | 38 ++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/lib/libc/tests/stdlib/system_test.c b/lib/libc/tests/stdlib/system_test.c index b6a31583d52d..9e556f257791 100644 --- a/lib/libc/tests/stdlib/system_test.c +++ b/lib/libc/tests/stdlib/system_test.c @@ -92,6 +92,12 @@ system_thread(void *arg) return ((void *)(intptr_t)system(cmd)); } +static inline int +sigcmpset(const sigset_t *a, const sigset_t *b) +{ + return (memcmp(a, b, sizeof(sigset_t))); +} + ATF_TC(system_concurrent); ATF_TC_HEAD(system_concurrent, tc) { @@ -99,7 +105,8 @@ ATF_TC_HEAD(system_concurrent, tc) } ATF_TC_BODY(system_concurrent, tc) { -#define N 3 + enum { N = 3 }; + struct sigaction sigint, sigquit, sigact; sigset_t normset, sigset; pthread_t thr[N]; char fn[8]; @@ -119,8 +126,10 @@ ATF_TC_BODY(system_concurrent, tc) ATF_REQUIRE_EQ(0, symlink(fn, fn)); } - /* Get the current and expected signal mask */ - sigprocmask(0, NULL, &normset); + /* Save the current signal dispositions */ + ATF_REQUIRE_EQ(0, sigaction(SIGINT, NULL, &sigint)); + ATF_REQUIRE_EQ(0, sigaction(SIGQUIT, NULL, &sigquit)); + ATF_REQUIRE_EQ(0, sigprocmask(0, NULL, &normset)); /* Spawn threads which block on these files */ for (int i = 0; i < N; i++) { @@ -140,10 +149,12 @@ ATF_TC_BODY(system_concurrent, tc) /* Release the locks */ for (int i = 0; i < N; i++) { /* Check the signal dispositions */ - ATF_CHECK_EQ(SIG_IGN, signal(SIGINT, SIG_IGN)); - ATF_CHECK_EQ(SIG_IGN, signal(SIGQUIT, SIG_IGN)); + ATF_REQUIRE_EQ(0, sigaction(SIGINT, NULL, &sigact)); + ATF_CHECK_EQ(SIG_IGN, sigact.sa_handler); + ATF_REQUIRE_EQ(0, sigaction(SIGQUIT, NULL, &sigact)); + ATF_CHECK_EQ(SIG_IGN, sigact.sa_handler); #ifndef PROCMASK_IS_THREADMASK - sigprocmask(0, NULL, &sigset); + ATF_REQUIRE_EQ(0, sigprocmask(0, NULL, &sigset)); ATF_CHECK(sigismember(&sigset, SIGCHLD)); #endif @@ -156,11 +167,16 @@ ATF_TC_BODY(system_concurrent, tc) } /* Check the signal dispositions */ - ATF_CHECK_EQ(SIG_DFL, signal(SIGINT, SIG_DFL)); - ATF_CHECK_EQ(SIG_DFL, signal(SIGQUIT, SIG_DFL)); - sigprocmask(0, NULL, &sigset); - ATF_CHECK_EQ(0, memcmp(&sigset, &normset, sizeof(sigset_t))); -#undef N + ATF_REQUIRE_EQ(0, sigaction(SIGINT, NULL, &sigact)); + ATF_CHECK_EQ(sigint.sa_handler, sigact.sa_handler); + ATF_CHECK_EQ(sigint.sa_flags, sigact.sa_flags); + ATF_CHECK_EQ(0, sigcmpset(&sigint.sa_mask, &sigact.sa_mask)); + ATF_REQUIRE_EQ(0, sigaction(SIGQUIT, NULL, &sigact)); + ATF_CHECK_EQ(sigquit.sa_handler, sigact.sa_handler); + ATF_CHECK_EQ(sigquit.sa_flags, sigact.sa_flags); + ATF_CHECK_EQ(0, sigcmpset(&sigquit.sa_mask, &sigact.sa_mask)); + ATF_REQUIRE_EQ(0, sigprocmask(0, NULL, &sigset)); + ATF_CHECK_EQ(0, sigcmpset(&sigset, &normset)); } ATF_TP_ADD_TCS(tp)