From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, T_SCC_BODY_TEXT_LINE shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 9B3D61F4D7; Fri, 10 Jun 2022 09:55:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1654854909; bh=6e+kpbkWr0G8YlCIEh2c7p6xobHnrjrt5DDTOnh87l4=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=pn1okGWtySJ11RrrtQ0PEEu7V5f1MOzZHVv9XhgDHk/EQ6xwhcJdEh+aI/LQqIpGU KjB43+GOfbJqRP3T0VZCr9+BNTZBigYviXRgtGPH6mbZU5hjBfdDuObibW1tc9elcX BHFGXPQJ08emkZE9SE5DU6AgEq/S7LxbvN0HBe/M= Date: Fri, 10 Jun 2022 09:55:09 +0000 From: Eric Wong To: Thiago Jung Bauermann Cc: meta@public-inbox.org Subject: Re: [PATCH] t/spawn: Find invalid PID to try to join its process group Message-ID: <20220610095509.M660001@dcvr> References: <20220610032145.110888-1-bauermann@kolabnow.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20220610032145.110888-1-bauermann@kolabnow.com> List-Id: Thiago Jung Bauermann 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