From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id D6FE91FF13A for ; Wed, 10 Jun 2026 13:36:40 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id B7CB0AE18; Wed, 10 Jun 2026 13:36:40 +0200 (CEST) From: Dominik Csapak To: pmg-devel@lists.proxmox.com Subject: [PATCH pmg-api 1/3] pmgpolicy: fix failing run_command in children Date: Wed, 10 Jun 2026 13:35:44 +0200 Message-ID: <20260610113634.2172613-1-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.049 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: GPOTTDEETEKB7HJL35QL2557YSFNVYLS X-Message-ID-Hash: GPOTTDEETEKB7HJL35QL2557YSFNVYLS X-MailFrom: d.csapak@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Mail Gateway development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Net::Server::PreForkSimple installs a handler for that in the parent which reaps all children automatically with `waitpid(-1, ...)` and this gets copied over on fork. Normally, the default `run_child` method sets this back to the default, but in pmgpolicy that is overwritten and not all signal handlers are set correctly. This handler with its waitpid will be called before the one in `run_command` which results in an error there. To fix this, simply do what the default `run_child` does and set SIGCHLD to 'DEFAULT'. Signed-off-by: Dominik Csapak --- src/bin/pmgpolicy | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bin/pmgpolicy b/src/bin/pmgpolicy index d7d440c..31bffe7 100755 --- a/src/bin/pmgpolicy +++ b/src/bin/pmgpolicy @@ -1002,6 +1002,8 @@ sub run_child { exit; }; + $SIG{'CHLD'} = 'DEFAULT'; + delete $prop->{children}; $self->child_init_hook; -- 2.47.3