From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id 6OvfBUaBXGIsRwEAgWs5BA (envelope-from ) for ; Sun, 17 Apr 2022 23:06:14 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id eCUjA0aBXGK9dAAA9RJhRA (envelope-from ) for ; Sun, 17 Apr 2022 23:06:14 +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 A92A2285E6 for ; Sun, 17 Apr 2022 23:06:12 +0200 (CEST) Received: from localhost ([::1]:38310 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ngC5z-0006Ib-FD for larch@yhetil.org; Sun, 17 Apr 2022 17:06:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32868) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ngC5r-0006Fk-I4 for guix-patches@gnu.org; Sun, 17 Apr 2022 17:06:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:43544) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ngC5r-0000Xl-09 for guix-patches@gnu.org; Sun, 17 Apr 2022 17:06:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ngC5q-000262-Qn for guix-patches@gnu.org; Sun, 17 Apr 2022 17:06:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#54997] [PATCH 03/12] linux-container: 'call-with-container' relays SIGTERM and SIGINT. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 17 Apr 2022 21:06:02 +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.16502295517949 (code B ref 54997); Sun, 17 Apr 2022 21:06:02 +0000 Received: (at 54997) by debbugs.gnu.org; 17 Apr 2022 21:05:51 +0000 Received: from localhost ([127.0.0.1]:37418 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ngC5d-00023n-Qn for submit@debbugs.gnu.org; Sun, 17 Apr 2022 17:05:50 -0400 Received: from eggs.gnu.org ([209.51.188.92]:39442) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ngC5Y-00022Q-IU for 54997@debbugs.gnu.org; Sun, 17 Apr 2022 17:05:45 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58430) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ngC5T-0000VD-3g; Sun, 17 Apr 2022 17:05:39 -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=KQY2OhpYVR32wlhD9kgHENqTHQ9s/ec3P+TbLHhnwgU=; b=Pb8jPn6zMh8UsbHsWHy8 jQDIYoFBuzGFJDzTwDeKllxocjba5fBRIfFlEpNAtEtlQjRaOYoD/EmwrYycqXf81ieov7HmjGUTO xTqnF8syHQ9EpMmRsliBtWZaiEtTdmq1IvmEYVwy9dId3cMfOmxeWkLMpfG2ZUzRDbiXM6uCF20Ne Jl7/WXWh3VC/Plu1C7CJBRnB3He29YaZBnS6FldRsNav8VbFQIrnA4URj8+KNJCZUWEY9mhOfdu/k x4GOSPkYu/hSZ5OCS6DBPpomJJErXPmBwwForZwI+r+f6ggMd4nCQvqRCy9cPrd7cgA0YW5uuXcXO hjd43C6qZLuwgw==; Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=38870 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 1ngC5S-000268-NP; Sun, 17 Apr 2022 17:05:38 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Date: Sun, 17 Apr 2022 23:04:44 +0200 Message-Id: <20220417210453.27884-3-ludo@gnu.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220417210453.27884-1-ludo@gnu.org> References: <20220417210453.27884-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=1650229572; 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=KQY2OhpYVR32wlhD9kgHENqTHQ9s/ec3P+TbLHhnwgU=; b=I2OHz5GX6GL5QIdeoQfC22qxrNSwO1+YBRtAvBx+yCbuaP+UlJdlmcTM26X/G8woPFwS3w 1ZcyJF2yAlcYLH57fmXgAqSWK0E4XlHQO3YlMXmWjYEAOJHXy3zhjyy5sASJPh1bhhK+7W 7VcZFacdwzX2eEVpTabSqLlEsEB6fFNb53S7xl212ejjxZRTmb7uBVnwx/+eOZ9wo28LEO 3qbdRZV4oj48/kUWimhHwybAgpAV5Q5Mw/DslcmifQP4xM2aDSqsmXKrU1PAonzUhU1rk4 3xOHJ1h58NIUqFL9/wuUgHdh8WgpZJo7Pt80bjybvlsbmWXtRxXuC9QU98CImQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1650229572; a=rsa-sha256; cv=none; b=RIunH/am0dWB+3FxeCkQUkRlNSjcHnF4RFBNJw5RzuiQJB2KLE2eBRsXhWbN/ku9MN9p2n Oz/PGgSB+LY0QavhPlvtHtTOg2d+QOo3uTA4CKTNpWzjzpexmAVV4xiG4VVLGM8ukpocnz /onz9q9EkR8J4CAGYkcGSYLWGdYNkcjZggi5KM5ISnlRT1377G9Kz2p7AXuQHffblOdtju fJER904m1sn7i+lk9mT79dWQtSBo0p8ybnycK9IJ0U9D/XDomj6CyAbQXSuibRRkwJ4AuO PoPgo71AFODO/2az++oQnQ4mxu0cJhoKUBHFX5KlxzS22CU3PiODJN6sSHC8Ig== 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=Pb8jPn6z; 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: -0.94 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=Pb8jPn6z; 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: A92A2285E6 X-Spam-Score: -0.94 X-Migadu-Scanner: scn1.migadu.com X-TUID: vJ/T1oIuSY0r * gnu/build/linux-container.scm (call-with-container): Add #:relayed-signals and honor it. --- gnu/build/linux-container.scm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm index bdeca2cdb9..c19029aa65 100644 --- a/gnu/build/linux-container.scm +++ b/gnu/build/linux-container.scm @@ -303,6 +303,7 @@ (define (call-with-temporary-directory proc) (define* (call-with-container mounts thunk #:key (namespaces %namespaces) (host-uids 1) (guest-uid 0) (guest-gid 0) + (relayed-signals (list SIGINT SIGTERM)) (process-spawned-hook (const #t))) "Run THUNK in a new container process and return its exit status; call PROCESS-SPAWNED-HOOK with the PID of the new process that has been spawned. @@ -320,6 +321,9 @@ (define* (call-with-container mounts thunk #:key (namespaces %namespaces) GUEST-UID and GUEST-GID specify the first UID (respectively GID) that host UIDs (respectively GIDs) map to in the namespace. +RELAYED-SIGNALS is the list of signals that are \"relayed\" to the container +process when caught by its parent. + 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." @@ -328,11 +332,12 @@ (define* (call-with-container mounts thunk #:key (namespaces %namespaces) (let ((pid (run-container root mounts namespaces host-uids thunk #:guest-uid guest-uid #:guest-gid guest-gid))) - ;; Catch SIGINT and kill the container process. - (sigaction SIGINT - (lambda (signum) - (false-if-exception - (kill pid SIGKILL)))) + (define (relay-signal signal) + (false-if-exception (kill pid signal))) + + (for-each (lambda (signal) + (sigaction signal relay-signal)) + relayed-signals) (process-spawned-hook pid) (match (waitpid pid) -- 2.35.1