From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id AMLZDtV2aWKLOgEAbAwnHQ (envelope-from ) for ; Wed, 27 Apr 2022 19:01:09 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id eJoGD9V2aWIRVAEAauVa8A (envelope-from ) for ; Wed, 27 Apr 2022 19:01:09 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id BBB4D26D8D for ; Wed, 27 Apr 2022 19:01:08 +0200 (CEST) Received: from localhost ([::1]:32890 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1njl2J-00005X-Pl for larch@yhetil.org; Wed, 27 Apr 2022 13:01:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34718) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1njkzM-0004Mr-KL for guix-patches@gnu.org; Wed, 27 Apr 2022 12:58:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:50267) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1njkzL-0005Bi-Sj for guix-patches@gnu.org; Wed, 27 Apr 2022 12:58:04 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1njkzL-0003tW-Se for guix-patches@gnu.org; Wed, 27 Apr 2022 12:58:03 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#54997] [PATCH v2 04/15] linux-container: Ensure signal-handling asyncs get a chance to run. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 27 Apr 2022 16:58:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 54997 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 54997@debbugs.gnu.org Cc: Ludovic =?UTF-8?Q?Court=C3=A8s?= Received: via spool by 54997-submit@debbugs.gnu.org id=B54997.165107864514802 (code B ref 54997); Wed, 27 Apr 2022 16:58:03 +0000 Received: (at 54997) by debbugs.gnu.org; 27 Apr 2022 16:57:25 +0000 Received: from localhost ([127.0.0.1]:44135 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1njkyj-0003qa-6d for submit@debbugs.gnu.org; Wed, 27 Apr 2022 12:57:25 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41158) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1njkyG-0003nW-Nx for 54997@debbugs.gnu.org; Wed, 27 Apr 2022 12:56:57 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:60008) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1njkyB-00053E-Ah; Wed, 27 Apr 2022 12:56:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Date:Subject:To: From; bh=QbRALRKaqmLoEUVK2vFlTVf7B0r6S1MzPcNflli99eg=; b=hZWk9n6SdJZtvBenVWfN U7dWAPmN3Y+ehzVK0suGvT8dcVgpbbsm6lIUxOV50mgSBrnbrUQAAx86SnAhjn8/IQc9yvz0hlXP0 xFo8XgOx00BRi2bAVnT0zBRz6iDtLAENvkZn1Lp1qRvAEhiOA1/vSelEY+rYDsbvtLY6MhukST6Gf +jFHoobymihRAObLDIGs2w4F8u0Rzgg22FwU0UoGA9sltIjoeg3AQYOZIE58WLRv7s63g2Hs8M+gV gxXrHARmPuV2pFjmVrYlmEnokqPnIm/+tk1yxHnapFF9dUk2+pGt8ToWWDj0dzMYqEx4Yo+N+q29b 6bsFAOKTWxQL8A==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201]:64439 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1njkyA-0000Hl-Uq; Wed, 27 Apr 2022 12:56:51 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Date: Wed, 27 Apr 2022 18:56:24 +0200 Message-Id: <20220427165635.8015-5-ludo@gnu.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220427165635.8015-1-ludo@gnu.org> References: <878rrrk1v1.fsf_-_@gnu.org> <20220427165635.8015-1-ludo@gnu.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1651078868; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=QbRALRKaqmLoEUVK2vFlTVf7B0r6S1MzPcNflli99eg=; b=cOxG3T32/sUp1qCKUTLyvEEFN56K1kDQi+ZTfe02zi+TVAQAjNlo/hJ4Nh7oSq+c9y88QH I6Z0+eUb7UclcajcqnqxCM3FY3Zv+5qKFpuYnfyDwke+Ij37xWhkRQHAdwCIHyNloet0EM OuPfg38F3peSI8uQxUXoxSsKePQulom3sOWscGU8fZtDBF6VuO61GbmCDyt6sEW5WgxYzO /LGqTQZX01t0qJ1YkrarUxultDSEdDLu9fz4GOuKkuT+sWSqNCGP07Zilnq/vjJx4Dp5/h sH7sDnODf8y6UWw/HWH439VVQ+xexVQPAMUNBD1euxGhy2Dl2UwHzB8zrg3SNw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1651078868; a=rsa-sha256; cv=none; b=YwpMZ/QJa2G8hMuqqAdL9Zsy5TATCm1l4qHEcM/IOew8kcbKupKYACjxWmyYMoYADxXBT3 JCPj1MxC1m0GTCnxqBBq6Xx4BNoOq6btNTnlHUggV5MavLiy7LIRfO5SfTcK5v4NPtusmy koPQRv5lBgsyE+hDAadmHKn/Dqp7ZcHdnyipmoVdtj11RB+7FDf7oKuByMsfAntf4AJQxN n5VRT77X7roQIGgKfQrpqdXT8pLN79zgqXHuiEwbUQj8CNKBRkZfnobB8WSgAmYXv1oCC5 UGoHgz8KBJYYyKpmsj4WY40X9j1cV0lusqPQ27zS0KnamSOG6AWH+8ZbSzaH4w== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=hZWk9n6S; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -2.40 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=hZWk9n6S; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: BBB4D26D8D X-Spam-Score: -2.40 X-Migadu-Scanner: scn1.migadu.com X-TUID: LoU0dFlevgBS Previously we could enter the blocking 'waitpid' call and miss an opportunity to run the signal handler async. * gnu/build/linux-container.scm (call-with-container) [periodically-schedule-asyncs]: New procedure. [install-signal-handlers]: Call it. --- gnu/build/linux-container.scm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm index 03c01439ce..1fac8f4b92 100644 --- a/gnu/build/linux-container.scm +++ b/gnu/build/linux-container.scm @@ -327,11 +327,20 @@ (define* (call-with-container mounts thunk #:key (namespaces %namespaces) Note that if THUNK needs to load any additional Guile modules, the relevant module files must be present in one of the mappings in MOUNTS and the Guile load path must be adjusted as needed." + (define (periodically-schedule-asyncs) + ;; XXX: In Guile there's a time window where a signal-handling async could + ;; be queued without being processed by the time we enter a blocking + ;; syscall like waitpid(2) (info "(guile) Signals"). This terrible hack + ;; ensures pending asyncs get a chance to run periodically. + (sigaction SIGALRM (lambda _ (alarm 1))) + (alarm 1)) + (define (install-signal-handlers pid) ;; Install handlers that forward signals to PID. (define (relay-signal signal) (false-if-exception (kill pid signal))) + (periodically-schedule-asyncs) (for-each (lambda (signal) (sigaction signal relay-signal)) relayed-signals)) -- 2.35.1