From nobody Sat Aug 1 12:19:29 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 4hC2754qxTz6mv5R for ; Sat, 01 Aug 2026 12:19:29 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hC2752qsWz49lW for ; Sat, 01 Aug 2026 12:19:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1785586769; 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=Vq39+ls9+mWDCxvVjwoqIHHeG6zoISmZJdlNLMc/k9I=; b=Uxe7glaxl2IzoimGuvhoy4iDMuECQ3VnG82eXfCfQlKrhKLApFQh5HZd3mpAJvLHuPKEBZ nzp21epzv3jKbOZNqMEfLJN4uF7ycUycUjJgbG0Lv5PjAHOonczgoxddM2bVo9NXIbYqFK DdISMX5j4yIiVPGSZFIr+/ETw3Amjrf+uL6tHkzVuh+IhYQFc4eZpAsCoEtSP3wllwtwdI 7D+3LLpPRuIo3cqEC9bbhbe4BsGxf1I35Qgt1ecwFJ+Yp2+uV8YVO+ZxgygQmJpWBnxY4s 0EJDZe8rS+OHFNL1JfLdD8yVYzYaSLn20/Bsci/ftFea8k2hFV0bcdyqvFC5HQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1785586769; a=rsa-sha256; cv=none; b=nY5yYfnXNAnF0qCQweKvMdfpbrifFbgLqb5NHqzG029rUxpAquNBNutl7DhRPGavmOCeIb BcQcS3ajr1X3IsLEVYkZ6d8bZKzmXvzKqebesbFrbb3Fv1y9TpZDl0WUSnZqkY1BWuNBDE ApDUvdPqwpcPiMd1XFpNMdnpghcUGDEQxhD+DfOR3zmUskpeTDxhYEFFhmJzOxgaoFOgWg cBZ6wmEbfk1M878EOUAfDhkQslcYsGWz2bE/qrseA2a9Mub6Omkcj/yPkizGM2K5BVFg33 SJX9uUvRXfCQEudOUt9SJXVEFEO/E1PKVU04Ku/Rjr4T9dw5qLtvqsSX/1H2PA== 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=1785586769; 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=Vq39+ls9+mWDCxvVjwoqIHHeG6zoISmZJdlNLMc/k9I=; b=b0aoa/0BlhaAgnSYXFYFOYEjkPS4fTjy1htQxUAF7SNTgLCc+ZWuwCGetOQJMPmEwxZ4/B U5H+tSolbLIy8uMW1bYE0PQe+38I5iunQuwhdikXv6kZQUHsH3uH5Cc1WrXzI5ymbblgh8 mYdm2nf6YfR45XFmbhfWh0fEXuTL6nnPBDbNTBVbrfCMFSjGIdZYbdR/LlKvUbNMp1u2xR IF/W13LWmWBf2ONpsl4AqaFIGOP/UdkqMT0bpyb4AxnpCfXzqjLm4x8QVhkd9/kqkWZAe+ sR24909DuYNChOWdrAVKFfGbneUa9YTjDdiPEP776ew9IEU17R7tQ3X8axGqMw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hC2751bJQzkjp for ; Sat, 01 Aug 2026 12:19:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1dea0 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 01 Aug 2026 12:19:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: a96f285b5953 - main - tests/sys/kern: adjust tests for the new reaping behavior 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a96f285b5953f6ff3adb3ab43433ba9e15a9aa46 Auto-Submitted: auto-generated Date: Sat, 01 Aug 2026 12:19:29 +0000 Message-Id: <6a6de451.1dea0.25565c5e@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=a96f285b5953f6ff3adb3ab43433ba9e15a9aa46 commit a96f285b5953f6ff3adb3ab43433ba9e15a9aa46 Author: Konstantin Belousov AuthorDate: 2026-07-29 05:29:21 +0000 Commit: Konstantin Belousov CommitDate: 2026-08-01 10:42:01 +0000 tests/sys/kern: adjust tests for the new reaping behavior Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D58530 --- tests/sys/kern/pdwait.c | 19 +++++++++++-------- tests/sys/kern/procdesc.c | 6 ++++-- tests/sys/kern/ptrace_test.c | 9 ++++----- tests/sys/kern/reaper.c | 1 + 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/tests/sys/kern/pdwait.c b/tests/sys/kern/pdwait.c index c7b2c40a87ba..92c8c1b2b3ca 100644 --- a/tests/sys/kern/pdwait.c +++ b/tests/sys/kern/pdwait.c @@ -216,8 +216,8 @@ ATF_TC_BODY(enotcap, tc) } /* - * Even though the process descriptor is still open, there is no more process - * to signal after pdwait() has returned. + * Zombie is reaped only after the last process descriptor closed. So + * the child still can be signalled after pdwait(). */ ATF_TC_WITHOUT_HEAD(pdkill_after_pdwait); ATF_TC_BODY(pdkill_after_pdwait, tc) @@ -226,7 +226,7 @@ ATF_TC_BODY(pdkill_after_pdwait, tc) pid_t pid; int r, status; - pid = pdfork(&fdp, 0); + pid = pdfork(&fdp, PD_NOWAITPID); if (pid == 0) _exit(42); ATF_REQUIRE_MSG(pid >= 0, "pdfork failed: %s", strerror(errno)); @@ -236,13 +236,13 @@ ATF_TC_BODY(pdkill_after_pdwait, tc) ATF_CHECK_EQ(r, 0); ATF_REQUIRE(WIFEXITED(status) && WEXITSTATUS(status) == 42); - ATF_REQUIRE_ERRNO(ESRCH, pdkill(fdp, SIGTERM) < 0); + ATF_REQUIRE_EQ(pdkill(fdp, SIGTERM), 0); close(fdp); } /* - * Even though the process descriptor is still open, there is no more status to + * While the process descriptor is still open, there is still the status to * return after a pid-based wait() function has already returned it. */ ATF_TC_WITHOUT_HEAD(pdwait_after_waitpid); @@ -263,12 +263,13 @@ ATF_TC_BODY(pdwait_after_waitpid, tc) ATF_CHECK_EQ(pid, waited_pid); ATF_REQUIRE(WIFEXITED(status) && WEXITSTATUS(status) == 42); - ATF_REQUIRE_ERRNO(ESRCH, pdwait(fdp, NULL, WEXITED, NULL, NULL) < 0); + ATF_REQUIRE_EQ(pdwait(fdp, &status, WEXITED, NULL, NULL), 0); + ATF_REQUIRE(WIFEXITED(status) && WEXITSTATUS(status) == 42); close(fdp); } -/* Called twice, waitpid should return ESRCH the second time */ +/* Called twice, waitpid should work second time */ ATF_TC_WITHOUT_HEAD(twice); ATF_TC_BODY(twice, tc) { @@ -286,7 +287,9 @@ ATF_TC_BODY(twice, tc) ATF_CHECK_EQ(r, 0); ATF_REQUIRE(WIFEXITED(status) && WEXITSTATUS(status) == 42); - ATF_REQUIRE_ERRNO(ESRCH, pdwait(fdp, NULL, WEXITED, NULL, NULL) < 0); + r = pdwait(fdp, &status, WEXITED, NULL, NULL); + ATF_CHECK_EQ(r, 0); + ATF_REQUIRE(WIFEXITED(status) && WEXITSTATUS(status) == 42); close(fdp); } diff --git a/tests/sys/kern/procdesc.c b/tests/sys/kern/procdesc.c index 1feaef34e2cb..b78e903adb7c 100644 --- a/tests/sys/kern/procdesc.c +++ b/tests/sys/kern/procdesc.c @@ -547,8 +547,10 @@ ATF_TC_BODY(pdopenpid_pdwait_only_one, tc) "pdwait(fd1): %s", strerror(errno)); ATF_REQUIRE(WIFEXITED(status) && WEXITSTATUS(status) == 42); - /* The second fd should no longer be able to collect. */ - ATF_REQUIRE_ERRNO(ESRCH, pdwait(fd2, &status, WEXITED, NULL, NULL) < 0); + /* The second fd should be able to collect as well. */ + ATF_REQUIRE_MSG(pdwait(fd2, &status, WEXITED, NULL, NULL) == 0, + "pdwait(fd2): %s", strerror(errno)); + ATF_REQUIRE(WIFEXITED(status) && WEXITSTATUS(status) == 42); ATF_REQUIRE(close(fd1) == 0); ATF_REQUIRE(close(fd2) == 0); diff --git a/tests/sys/kern/ptrace_test.c b/tests/sys/kern/ptrace_test.c index 478e787d129b..be808a2286d9 100644 --- a/tests/sys/kern/ptrace_test.c +++ b/tests/sys/kern/ptrace_test.c @@ -4232,7 +4232,7 @@ ATF_TC_BODY(ptrace__proc_reparent, tc) pid_t traced, debuger, wpid; int pd, status; - traced = pdfork(&pd, 0); + traced = pdfork(&pd, PD_NOWAITPID); ATF_REQUIRE(traced >= 0); if (traced == 0) { raise(SIGSTOP); @@ -4305,12 +4305,11 @@ ATF_TC_BODY(ptrace__procdesc_wait_child, tc) ATF_REQUIRE(ptrace(PT_CONTINUE, child, (caddr_t)1, 0) != -1); /* - * If process was created by pdfork, the return code have to - * be collected through process descriptor. + * If process was created by pdfork but without PD_NOWAITPID, + * the return code is available for wait(). */ wpid = wait(&status); - REQUIRE_EQ(wpid, -1); - REQUIRE_EQ(errno, ECHILD); + REQUIRE_EQ(wpid, child); ATF_REQUIRE(close(pd) != -1); } diff --git a/tests/sys/kern/reaper.c b/tests/sys/kern/reaper.c index fb5eeb9b324b..0d3a9a4ba5cf 100644 --- a/tests/sys/kern/reaper.c +++ b/tests/sys/kern/reaper.c @@ -764,6 +764,7 @@ ATF_TC_BODY(reaper_pdfork, tc) ATF_REQUIRE_EQ(pid, child); r = WIFEXITED(status) ? WEXITSTATUS(status) : -1; ATF_REQUIRE_EQ(r, 0); + close(pd); r = procctl(P_PID, parent, PROC_REAP_STATUS, &st); ATF_REQUIRE_EQ(r, 0);