Patch Detail
Show a patch.
GET /api/1.1/patches/22403/?format=api
{ "id": 22403, "url": "https://patchwork.libcamera.org/api/1.1/patches/22403/?format=api", "web_url": "https://patchwork.libcamera.org/patch/22403/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20241218182754.2414920-2-julien.vuillaumier@nxp.com>", "date": "2024-12-18T18:27:54", "name": "[v2,1/1] libcamera: process: Pass stderr and reserve stdin and stdout fds", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "326687bafb757f5e06646b1b5e7721704a97f8d7", "submitter": { "id": 190, "url": "https://patchwork.libcamera.org/api/1.1/people/190/?format=api", "name": "Julien Vuillaumier", "email": "julien.vuillaumier@nxp.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/22403/mbox/", "series": [ { "id": 4914, "url": "https://patchwork.libcamera.org/api/1.1/series/4914/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4914", "date": "2024-12-18T18:27:53", "name": "libcamera: process: Pass stderr and reserve stdin and stdout fds", "version": 2, "mbox": "https://patchwork.libcamera.org/series/4914/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/22403/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/22403/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 68C5CC32FE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 18 Dec 2024 18:27:56 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EECB8680B6;\n\tWed, 18 Dec 2024 19:27:55 +0100 (CET)", "from EUR05-AM6-obe.outbound.protection.outlook.com\n\t(mail-am6eur05on2060b.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:2612::60b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 16D36680B2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Dec 2024 19:27:53 +0100 (CET)", "from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)\n\tby DBBPR04MB7801.eurprd04.prod.outlook.com (2603:10a6:10:1eb::24)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8272.13;\n\tWed, 18 Dec 2024 18:27:51 +0000", "from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::eace:e980:28a4:ef8a]) by\n\tAM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::eace:e980:28a4:ef8a%5]) with mapi id 15.20.8251.015;\n\tWed, 18 Dec 2024 18:27:51 +0000" ], "Authentication-Results": [ "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"WIRW2fJV\";\n\tdkim-atps=neutral", "dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=nxp.com;" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n\tb=IggNntoHIAAmai3zpNjJM+ZhcPMMv6G6XvyAuI9DEsJCAhDnwB5KHYqDhMmEvGCbXc92kP9628dTN5CVLF2zZRhIoZ+TyXE4YYU2SwtKQWm2XDmhVdxACL7nMAwEJjTPRL67aeLYPRoIAxK5nV7ogtihA9+x5Br/voEyXIPZTELRzgWInpL9dCaMbREGY0AQ6tX1yWZXmarMLzNN4OtyWowAMGrrhxYhS/A5E7JZDuZjUtPM+yqtYcB403f0Ztc/S207jh82Dkpqcbfy+jl9H6RHgq1gIAwuOYXgSr31xU4mO9hgBDyZVL2m3ut6HELnDEgQVP+xpBwcf9hvG6AJ4Q==", "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n\ts=arcselector10001;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n\tbh=wTsBvZOuKgIPnmCC4MVWn7uS3EjquLR2sbMhacLX6Ls=;\n\tb=EBdojvJMOLcq6vavJ1vMklzXpXr+c2vV6aXfXLnEpVhw+YedzkSZbUAqAWFkH78qI3akMuhrpWaI9yYtSViHwzMHgIRKlJYYRKpYvHn9NC+rVPKkCCDEAMbci6nJr/wqIrmmU/t8+dPPz3TXFaZO0qitPE4+8HWr1fXoKLwVftDy5++t60wPBX/zsi/7ugiwXOXc2LY9yp5GNgcXltVQTC+WoHwl26gUeo+OKRs8HNURLIefHDVk9/Yq/OJAnUuumf6wakS+55dfpVeZxGI027H1B9ir3hE1s2GZBWLvws/tc9yvnZkXc0ICrUXfMySJ4ut0k1240+VbGLc/pbLJEQ==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com;\n\tdkim=pass header.d=nxp.com; arc=none", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=wTsBvZOuKgIPnmCC4MVWn7uS3EjquLR2sbMhacLX6Ls=;\n\tb=WIRW2fJVNCAczYw9F8hdnzkc1D4Y0eZxWzpZcfNcXb6MSBd97USErnSio2cVgJ2JFzVW1F2uDZFmP6og2zR2obR1aehvDLfO5davTnQx3DJyWU/9C8hpK7F9hqdfW/4+EAq+wZkpSDpoiuhMjQ5cszNl74Oj3geU9Z4ioJGf/oTLHNukaoxTm/T3r43RfEkYjey7hrFMxDHwKJeIv3fX6A0BFMpsVVhgSUXHITSNA26qCGD4cLbIY5+q7X53WEmVkYgxashfYgWW6DJ5T2Yd5CyDOgponu24AjgbZ/AZKJt6CquOe25hGo4cTyBwg/Lg7lstrmWvN73u6+0h5303tA==", "From": "Julien Vuillaumier <julien.vuillaumier@nxp.com>", "To": "julien.vuillaumier@nxp.com, libcamera-devel@lists.libcamera.org,\n\tlaurent.pinchart@ideasonboard.com, kieran.bingham@ideasonboard.com,\n\tpaul.elder@ideasonboard.com", "Subject": "[PATCH v2 1/1] libcamera: process: Pass stderr and reserve stdin and\n\tstdout fds", "Date": "Wed, 18 Dec 2024 19:27:54 +0100", "Message-Id": "<20241218182754.2414920-2-julien.vuillaumier@nxp.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20241218182754.2414920-1-julien.vuillaumier@nxp.com>", "References": "<20241218182754.2414920-1-julien.vuillaumier@nxp.com>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "AM4PR0302CA0028.eurprd03.prod.outlook.com\n\t(2603:10a6:205:2::41) To AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)", "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "AM9PR04MB8147:EE_|DBBPR04MB7801:EE_", "X-MS-Office365-Filtering-Correlation-Id": "760f03b9-54d9-4bcc-c0c2-08dd1f91aea5", "X-LD-Processed": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;\n\tARA:13230040|52116014|1800799024|376014|366016|38350700014; ", "X-Microsoft-Antispam-Message-Info": "K11aBnf9tdLe5CZCkiw75of4sl1k0AXpwCVsQUgS+455YCVQ6sOuONI3hwnZKKLWpFqv22IAgTObEtSCabF0LCYnazI7Qvm13knVSXb/AiT2paxzmRY83PXM7g21HaEeigJnCMkd0mQ9aro+UruN699FtaITt7jZNwHY3mN6Vv+QTifJ5hf2A1EnsVrtO53FWAsCQHEvGSQfoIj4OH5D2lmEJKnlv6sgDjQ/EFCjwkMLA7os7cKsoLJbjWm6w+Ifb9jlAAkaFwI5S5mKsGrEUrc6oggjXfBlnO6RE4EkZDRe//Z7ush1KzPdEj4HhdbE3D/a2BQlF7jsz2Rh6KQatMYyT9a+QBrC9eRYlKhDrzstEJOWzisgO4VMSeavOzLpCDZoiSB2Vozg36Sn99d2Z1SE3bOe/NmAO8UpLXRdyxWvp+7m6WhdFKoOKLtG+K95Q4SRQe1cUDRDHS/L3EncGhg9B4+jJagJ9FWrYMueHKhyL3j4rWYJb+lVR22dFctZOlWlemwf9Z4Lf0BfvkwpxYlNYNI9IySz9na6+S8J7W8WCapWpNLGAiqlewCwtSmRcq0rGh80t6x+NbcDBAB4LJgVLnm/d6qXho9E/LSzwrAW9CXIXFhY9JNAyLH3qbknpdnUgdm616vLD7QjhTrNoWAL1Gf3NUV3C36L04/+L9qBhymEFPKFhyIBvjlrFgAWaSHlGeujUbNUEPdJ/SeugCZPlfQ+cHHaOuDvn3PGy25fPmFs4hL3II1DlHOvX+Nm39tROWIRcvIEFOwhJR5b6rWmUg49ghJAZspqDya6F0o1jzCnId/oMQW+bzooOc+T4gVoyOCByzih6QioME1CDLcI2jFNjuXPFEWGia8Sng0gtPGpMygZ0gl4hbXdXfTjC9slAM3LrQ0Explq+AKfEOfR878IHyA/x1S/kO7sroJCwN/J0Iro5NywOc0rODuSmbq9umI99KzCTFmYdnEU+EXG5j3WlIAB0B/o9RnkvAN5M9/B/7YIG6kYMNr1zO19fVK+J0yJjE5FB2dA6esk8FkikbaOELxKZzwkZWxFVGQcCnSbXptsf1hIgYMmJbbS9Wgd/Qjm7C37pUp7A7NVt9KgFecqorkB64q0PxVQ8A0qKwbW4HvEom9uaIL708h/uaSVPWcDnnPx7Zmsp0nJh4FyaULO33G0oMAlbUfwl0J+JlsCr2RijJecKlDO/ThyY3/BF6pX6VQ9ZDiqrnYfL4B5HznZhcKDxlsauDJSWGfUzaJxIUpcE4Foa3JD+XNWvxbWN8hfi6SAD0YjoZO3pse5s1YaIZ2c6sE3Rp3ft2tLAos+s4SFP8ArHRoNGQTVHE4QLbyR9I9FecCbODrFZYPEJarFPCrJcM0oBKrC7k0eReMDt6CLuBcB51+RTa9/5wcGTgsp8lgvZDLlmFyqjpS7BD7RPxYJKSebx5V/b5F+uHUpwTiuDobiB28vgKNG", "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:AM9PR04MB8147.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230040)(52116014)(1800799024)(376014)(366016)(38350700014);\n\tDIR:OUT; SFP:1101; ", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "wPbhkObH7vYVTmIPSLEB+HKQSS/672zu1C+uZc4vVZPPifnt3hntSXVwNBQPJxFsUjeEtKHT8dDsyCvvW45F0g6LFJ4VPrLh72nSwlWADnamgfKZLu97O7HAjkxaEd/AdT3qpKXxHI1qNKMXPJP2zU2eFUuWATDQnqWKga3T4YFWUzaPhlx1AG0YjEHRuHuP/Keg8xHkjBMzYHmLsI3I9taHftL0EvtHWzKdBl0R0cB6QHd6h7B/DBjVMNoOn7F6pqiXWWBWdEncUfy1U1N3Pk1Z1UcqwGx1JPq7+3xaWk3I1e7WhIuyBc35HBeaY6bNolxrw8TW/hwRFhKt3oWSUPboAzHiRDDynJ+RsE4sPfGjHxJIkiXQqDeOuw+SaugNUHCavZhihNbnU/vs7hXedX0AUupCcN1FvWMlh3/pppNnYg7YHY8vOVbHeMz4L8gSe7TQ/hACKYNRVaxzzVXcP8qYyja1MTsc0BBDf9GVEMoO/+UniMRihymtKvOHR5lOHAfm8+NQ5NdeK6LIOj1TYYchTE0L9n10B6PYCnYVOfPtniTQ5hvqwkiw5oZt6YAUvc4raNlaEOfarO5J12wTv4Tk/r7rYOftV2UrwooL8d89XYE5Cev8Odx1Y+rd4qYHQsEJBJmN1WlaAC+/l5BU2EBZOVdbuFUqmM/iCfOP6DTzo5aNEio5CTF9PEXUxFZO14EXD6CmUtGEawHyBTDDMLKlHqBJHp88kdTpcZ09TUie4ZdfRIYcBAoQINayAEDWo7CMvCkCOKw1ZEHWgYrVYY/b16EzVp62iiej2Hce7ICahhewc6dwIjq4IMtrWxzayjM8fVZxe2kHYVNRX1SnDYpXtLrj8qRz2jOXYuutEhL61IogxO5MZJrNWAX4uoAucQPCMwynX+Y+pCymCFpu/ak/+kD7F4Ft30UFD47OMOWRxt2PLqccYWqc6OXOl5/6yue6Wuke02OmtDHA7RHh3BmeR4aMiXwRiBKC6ctaFwgdQxhs5oQd/GaFMdmglq0lYNubtCNBw3IPa1b2QdNrtpRghPFmX3fAjFIV/6db3UdPB1eW+/C/F78JzkJxeauuFNkntJ2VgYiv0LdyD6hTnDGvZjSDA0kzHYwMtHpOVQREoxI3RTen4dfvi8pQsz2H1E3jtpNHbzFJdCsTSbYwVY0ZbyS1W+ixzs5h3ucAbdd8cTNhTKRt1ah6t7d1A9TDqe2vI/50SYjpDy3ZPhZyoOh5w+jSpyyRhLcpVWPIgeA0BNMI3KU+Gk2WNPYtjCteWcc6i53p0Kk5oG6ai0QH/drnfcJavBXJirYRZ2YLXRncN1q2J/roarvZj68T28DBPAf+K5hFEywAbu4U3fAWMijNQLVzX+J6tcmtriVO8Jbn9kKGdjv5u45fsCE6p0USxFKzh6S8zgiFVMIowf6OK7291anu3T0VZC2461QpT5iN1JfWgAW8oLp6yJy+sCYAbFEGsFY87hiW8kzh1iPdcdgL3u0PE4pkaVSbkbAo9MRdfuj+CPpIrxl423q/V4xEQjVJX1q2s8xkYqqi8NHH7ukdXDfXYmEYF/uenyYZWIwgKNBk6Aj+SThmFNGDAOqIpOvWi7bTFu23u23hamnYUA==", "X-OriginatorOrg": "nxp.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "760f03b9-54d9-4bcc-c0c2-08dd1f91aea5", "X-MS-Exchange-CrossTenant-AuthSource": "AM9PR04MB8147.eurprd04.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "18 Dec 2024 18:27:51.8752\n\t(UTC)", "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted", "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635", "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED", "X-MS-Exchange-CrossTenant-UserPrincipalName": "DenrqjQ9xseZVkLnTyuWv7wc/M7l8748U4srAy3QFYQlUVFJCbkWTisDjf1nwsiHroSPlUkU6H5XtyrsYvJY1SKE6dIaUf0b+DUnu/c2rck=", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DBBPR04MB7801", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "When a child process is started from Process::start(), the file\ndescriptors inherited from the parent process are closed, except\nthe ones explicitly listed in the fds[] argument.\n\nOne issue is that the file descriptors for stdin, stdout and stderr\nbeing closed, the subsequent file descriptors created by the child\nprocess will reuse the values 0, 1 and 2 that are now available.\nThus usage of printf(), assert() or alike may direct its output\nto the new resource bound to one of these reused file descriptors.\nThe other issue is that the child process can no longer log on\nthe console because stderr has been closed.\n\nTo address the 2 issues, Process:start() is amended as below:\n- Child process stdin and stdout are redirected to /dev/null so\nthat file descriptors 0 and 1 are not reused for any other\nusage, that could be corrupted by the presence of printf(),\nassert() or alike.\n- Child process inherits from parent's stderr in order to share\nthe same logging descriptor.\n\nSigned-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n---\n src/libcamera/process.cpp | 11 ++++++++++-\n 1 file changed, 10 insertions(+), 1 deletion(-)", "diff": "diff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp\nindex bc9833f4..86a887fb 100644\n--- a/src/libcamera/process.cpp\n+++ b/src/libcamera/process.cpp\n@@ -12,6 +12,7 @@\n #include <fcntl.h>\n #include <list>\n #include <signal.h>\n+#include <stdio.h>\n #include <string.h>\n #include <sys/socket.h>\n #include <sys/types.h>\n@@ -259,7 +260,15 @@ int Process::start(const std::string &path,\n \t\tif (isolate())\n \t\t\t_exit(EXIT_FAILURE);\n \n-\t\tcloseAllFdsExcept(fds);\n+\t\tstd::vector<int> v(fds);\n+\t\tv.push_back(STDERR_FILENO);\n+\t\tcloseAllFdsExcept(v);\n+\n+\t\tUniqueFD fd(::open(\"/dev/null\", O_RDWR));\n+\t\tif (fd.isValid()) {\n+\t\t\tdup2(fd.get(), STDIN_FILENO);\n+\t\t\tdup2(fd.get(), STDOUT_FILENO);\n+\t\t}\n \n \t\tconst char *file = utils::secure_getenv(\"LIBCAMERA_LOG_FILE\");\n \t\tif (file && strcmp(file, \"syslog\"))\n", "prefixes": [ "v2", "1/1" ] }