unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
From: Eric Wong <e@80x24.org>
To: Thiago Jung Bauermann <bauermann@kolabnow.com>
Cc: meta@public-inbox.org
Subject: Re: [PATCH] t/spawn: Find invalid PID to try to join its process group
Date: Fri, 10 Jun 2022 09:55:09 +0000	[thread overview]
Message-ID: <20220610095509.M660001@dcvr> (raw)
In-Reply-To: <20220610032145.110888-1-bauermann@kolabnow.com>

Thiago Jung Bauermann <bauermann@kolabnow.com> wrote:
> 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.

Ah, interesting...

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

OK, understood.

> ---
>  t/spawn.t | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> Hello,
> 
> First of all, thank you for public-inbox! Mailing list archives are so much
> better now for projects that use this project!
> 
> I've also been using lei and it's extremely helpful, thank you for this new
> tool as well.

You're welcome, hoping I'll soon be able to get my brain working
again to work on it..

> I packaged v1.8.0 for the GNU Guix distribution, but its build environment
> causes this test to fail. This patch fixes it.

Thanks for packaging and this patch.

> I'm not a Perl developer, so please let me know if there's anything I should
> improve in the code.

No worries, neither are most people these days :)  Some comments below.

> diff --git a/t/spawn.t b/t/spawn.t
> index 6168c1f6171c..4af215809962 100644
> --- a/t/spawn.t
> +++ b/t/spawn.t
> @@ -24,7 +24,17 @@ 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=65534; $i >= 2; $i--) {
> +            if (kill(0, $i) == 0) {
> +                $wrong_pgid = $i;
> +                last;
> +            }
> +        }
> +

Perhaps 65534 is enough for common purposes, but my FreeBSD VM
and newer Linux systems see PIDs greater than that (in the
millions, even).

Instead of 65534, starting the loop with some absurdly high
number (e.g 0x7fffffff) seems to work just as quickly on both
Linux and FreeBSD 12.  Not sure if that causes problems on Guix
or other systems, but it's unlikely.

Style note: we indent exclusively with hard tabs.  Our indentation
is more consistent with Linux kernel/git (C) style
than what is commonly found in CPAN and other Perl projects.

Thanks again

  reply	other threads:[~2022-06-10  9:55 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 [this message]
2022-06-10 15:13   ` Thiago Jung Bauermann
2022-06-10 15:39     ` [PATCH v2] " Thiago Jung Bauermann
2022-06-11  0:36       ` 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=20220610095509.M660001@dcvr \
    --to=e@80x24.org \
    --cc=bauermann@kolabnow.com \
    --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).