unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
From: Thiago Jung Bauermann <bauermann@kolabnow.com>
To: meta@public-inbox.org
Cc: Eric Wong <e@80x24.org>, Thiago Jung Bauermann <bauermann@kolabnow.com>
Subject: [PATCH v2] t/spawn: Find invalid PID to try to join its process group
Date: Fri, 10 Jun 2022 12:39:18 -0300	[thread overview]
Message-ID: <20220610153918.165014-1-bauermann@kolabnow.com> (raw)
In-Reply-To: <874k0s5yia.fsf@kolabnow.com>

In the container used to build packages of the GNU Guix distribution, PID 1
runs as the same user as the test so this spawn that should fail actually
succeeds.

Fix the problem by going through different PIDs and picking one that
either doesn't exist or we aren't allowed to signal.
---

Hello,

This version incorporates Eric's feedback.

I also took the opportunity to
add a comment explaining what the purpose of that particular spawn
invocation is. I wasn't familiar with the code so it wasn't immediately
obvious to me. I hope I got the comment right.

Changes since v1:
- Start PID search at 0x7fffffff.
- Changed indentation to all tabs.
- Added comment explaining purpose of the spawn invocation.

 t/spawn.t | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/t/spawn.t b/t/spawn.t
index 6168c1f6171c..5fc99a2a101c 100644
--- a/t/spawn.t
+++ b/t/spawn.t
@@ -24,7 +24,18 @@ SKIP: {
 	is(waitpid($pid, 0), $pid, 'waitpid succeeds on spawned process');
 	is($?, 0, 'true exited successfully');
 	pipe(my ($r, $w)) or BAIL_OUT;
-	$pid = eval { spawn(['true'], undef, { pgid => 1, 2 => $w }) };
+
+	# Find invalid PID to try to join its process group.
+	my $wrong_pgid = 1;
+	for (my $i=0x7fffffff; $i >= 2; $i--) {
+		if (kill(0, $i) == 0) {
+			$wrong_pgid = $i;
+			last;
+		}
+	}
+
+	# Test spawn behavior when it can't join the requested process group.
+	$pid = eval { spawn(['true'], undef, { pgid => $wrong_pgid, 2 => $w }) };
 	close $w;
 	my $err = do { local $/; <$r> };
 	# diag "$err ($@)";

base-commit: 930d2dc63e04c652e3b64cc7f3b3a7d377637065

  reply	other threads:[~2022-06-10 15:39 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-10  3:21 [PATCH] t/spawn: Find invalid PID to try to join its process group Thiago Jung Bauermann
2022-06-10  9:55 ` Eric Wong
2022-06-10 15:13   ` Thiago Jung Bauermann
2022-06-10 15:39     ` Thiago Jung Bauermann [this message]
2022-06-11  0:36       ` [PATCH v2] " Eric Wong
2022-06-11  3:22         ` Thiago Jung Bauermann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://public-inbox.org/README

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220610153918.165014-1-bauermann@kolabnow.com \
    --to=bauermann@kolabnow.com \
    --cc=e@80x24.org \
    --cc=meta@public-inbox.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).