From patchwork Tue May 27 15:56:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Vuillaumier X-Patchwork-Id: 23452 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 8884AC3237 for ; Tue, 27 May 2025 15:57:13 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 340AF68DA2; Tue, 27 May 2025 17:57:13 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="bD5wvNTQ"; dkim-atps=neutral Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazlp170100001.outbound.protection.outlook.com [IPv6:2a01:111:f403:c200::1]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 9C7D868D94 for ; Tue, 27 May 2025 17:57:11 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xtT29qD7DgvS6nl2gCKT41DvlVsm8q+LBDch3Qxlc7TwA6+mTzqJEZ+FYMcPNvfcNi/7EFieVHQWN/qngq1NEdOeORNI3oQYQk526coPtUE6C6Iu9LGBu2+9C0dBykVzu782ZzR7qAYzi0l4Isr5ioJ4rokw51vYf44m6LFOP0fd+ojwpaJRE6V8GGxC6xw9WUlc673lnS1+GnqVshY7CGrnqKGacPHHQVKiXCQHHWtQ5/VU8fJTHsMNHRIENX6340Sjv9GIr7VHQ6gHuG8w0GVYmmb3Y8eme7Nukwx+jaIfxkvO6yaBQm+75s0pR9I3H5hUw3mvwvdKkgGS7jcDdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=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; bh=uZSRQKP/Ia3SbtUqnAtDmFazqnTd61C/dJBZY+380Cg=; b=FwsOk/5BxdYWO18aTQQWIRwNRycizdVwOafTAPXlzqzvuGWP+ZqBVBvO2ILz7XZneT0+82Mt8x4Z/0PONCdy61SMs3X7u6cOujVHYvr1/CBfQWXBjNA57Ni/5RkeTRfiUMEvRy8Gl1GH5p7skQd9k6wNpGE18j055bHkawzXHKNHCrkCRdu78MTc1+SVBgY4HZAftQsG3HADkehbRVbTQnwWy5bFG0Tz/Gkw5k8CgbmtLn5rzyHANFXRfSi/3PDjPO4kKQGiV9iVcl4hZjTU3Iui8Fo2S8ROi/FtiGsLv9DvlOMt7gK14HyXPcxRGNNpuhnCP2J70YXV6VVJAZyUrg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uZSRQKP/Ia3SbtUqnAtDmFazqnTd61C/dJBZY+380Cg=; b=bD5wvNTQQb0zWRb1Jg3qDN36SexKNkxoU2Ox+q1rCeT/7eP3SGq93FySeppbCAnt0R1k9cxpj2YwatPSmHheWnDz1tSU+Jy+uYdHgazap7Sjw8ujst31ajdfa2yNNa3uz0XyeoyH5CTmA2iHIjmndHvxILphWCUur+L5XVPtBvwSrunnvP/c+6r5CvonnuqG5cWysNyj/5+Wsvshg7DwduzreyZ/rl+brfybiOYMTdwE8PDQp92o5PSyktnsguRQIJfmLMJm4Ub4/5b2uIOAIrDNmEJ9ajzYT1ooNL7SlvbF4aNg6d73TL8BA4pYAUN73uX3Wnu6ZIFCFrCRShnhoA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8147.eurprd04.prod.outlook.com (2603:10a6:20b:3e0::22) by AS8PR04MB8499.eurprd04.prod.outlook.com (2603:10a6:20b:342::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.29; Tue, 27 May 2025 15:57:10 +0000 Received: from AM9PR04MB8147.eurprd04.prod.outlook.com ([fe80::eace:e980:28a4:ef8a]) by AM9PR04MB8147.eurprd04.prod.outlook.com ([fe80::eace:e980:28a4:ef8a%7]) with mapi id 15.20.8722.027; Tue, 27 May 2025 15:57:10 +0000 From: Julien Vuillaumier To: libcamera-devel@lists.libcamera.org, barnabas.pocze@ideasonboard.com, paul.elder@ideasonboard.com Cc: Julien Vuillaumier Subject: [PATCH v4 1/2] libcamera: process: Use _exit in child process Date: Tue, 27 May 2025 17:56:14 +0200 Message-Id: <20250527155615.560463-2-julien.vuillaumier@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250527155615.560463-1-julien.vuillaumier@nxp.com> References: <20250527155615.560463-1-julien.vuillaumier@nxp.com> X-ClientProxiedBy: AS4PR09CA0017.eurprd09.prod.outlook.com (2603:10a6:20b:5d4::11) To AM9PR04MB8147.eurprd04.prod.outlook.com (2603:10a6:20b:3e0::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8147:EE_|AS8PR04MB8499:EE_ X-MS-Office365-Filtering-Correlation-Id: c1e9a4df-ea6c-4eab-3503-08dd9d3723b6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|376014|52116014|38350700014; X-Microsoft-Antispam-Message-Info: L/D+fCMGEz8nlXuqLY6Q1URa3Cjp0Xz9snaBGEJDRZRY3jiJ7rzHbdpOw5GkVcXdwSnOyD3o/t1FH4ijPMAu+WnStxFuESuw7SUXRdbTNzPJssc7Yn1e5vuL6PWUJ+Te7vr8qyAesc0lGjRH3xyYVElsZe0hAfBEW7j0KbLSoxB3ajaMyAcvv5qW9UL/cv1qH4pIq7wohEda65tBQnrkkhZUf3WSyq9PboC6Z4zVBU+0cG4QvT07ZB9rUb92KBNS6ICN/hf8eMqbt4S9pepxlj2HjIFAHs7N0+EE4mM72LCviYmMD92a3NVEh2SsRCo6uWK6l8FmIji8xKdqN3GR5+WYHTDv/0zWYdWkKHX+lUydKP/EO2uXQ0k8IuYlAOASY/BTqx6lerAXkSssfAvw7DbGdjumnqMWEmaCcMpBNWw0zj79T/cNTPCbybcqx2S8CH3Fnth56/a3IvAQXiF11Kxw1lh1clGUaUuEd7ppT8U6lW9JZGF1mA8959Zn9U04X/5NHgwpleutjRfJjccHGB/XAd6jkZb1Lo0qMQz/iIryxpbJGW955ZcEs84a0IEtEGsPbEGg1MhDvbwOKoWmE45dufhat5HqNiNAVvzYnA6SIBjNAs2BqroC7muNQ2r53CwStaJgSRSci2nXdByKbdJV6VR07sAwHptk/v2SQCYbpAmhOX6fQkC/xpAq30vCpV302+K6liEldfW4iZBMTBMV364p7AMt6y8T9kG1BHgPNkq/l12+q7rP19ZLWXSEfEIZ5+FIv6rO3E/Jh5XmX95XysDRc9AyBdA6rMdJ8SxRCTQh+erTwUuZb+S1I4jGdHhaYECoQ+u2z08rlsBDHmdUDA8BDPrcK9Nigx6wJU0/ZNXS3rW+3ay08dGP6ThxK/2YhsKV8QcH1bQX3FfkGgKFQjzgQGtXwpY+xOfsQIwcF+arX0d9q61RHsLcKVWXPvUOb4+ie0+qCn3flRmCgfbw87yV6gkbiKLyJmmWf58B3iJGO859ybOdXKMTA7pebOOJ+gBPdx+lrp00xd42927kBhZSLB1XCtv+SqXGGdjHTJX8HES5Domj6hTblG1bF1xRkPlT/8F2vOhC6F+AHkjqx7IdnNBkiFNEtnMVL7wN0CrNd/rrvIAHiFwDYUI3sJiire5t2L6dg/X3yIhKfMVgLtKfzNkLjFeCpU+DrTO5rOWg+MBlsa8aZS+RsSqcVbFwodaBumf/Tvevw74dz7/Rn9zqaAJkXVgui3h98bj1NLEgT7qi93Uot6GNeYh99eCmZnQmiwwfBSNZVlVgiRfwtgdIbyGa5+1QkLH6FSlXyDti/wGLRg0ckglWfzPElt19eQitgpgiIO1Lixb9qKxqNdusRn4i1x9wHDRIzIF3uT8bLZNJKdWeKS3cWye9pDdCZU6wEpLkU88vmKcCcuqdX1UswvvrMDi00fOX2Y0Ahm8YVC3AHN/yrkpIqnRIo/2UpFrS5B9rdaSMJhn85cByTxVemOZm5AuexUKj2Ag= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM9PR04MB8147.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(52116014)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4fg5Q/z0Ifz5vmXmTcrkWH1UdZ/Qh2RXMhWPuDFj7k6V51GGwNVOjA7UUNVqCKE+Is7RPHvL5f2mej+bczT/MFzyN6INzPd/10dfDWKw82JFyFWWQ0m9imcYsBqWAqsDTGTXwL1vU5qY3NrZ4xtmDfr3Ft+hlAJIM0AbpqebFXn2UVXhHV12VYxTpnAuzN7ld1wy2OfybNl9yhAYrsj43PwLPHU3TfhayCOf7Fk8GRFj8ggWqe/+dh7LO6se7ifAkacpB2eNDYqMCLbqkCWXdXoXkLoXjeqEdkOBhH2URXVQVGKLg52SwcPNO0O+Rq+jHgkK6SplPx8QiGMcejlwKU5H2a7DzhK5XTiSWYLWzvNSrXIvMpN+JiyyoAOobUt8TG/vkPX0DTjBGtEEgqvAs68GEfSLtHmhdNIXxrTv5uhaHjB+KIE6K+kh0ljg25KjyI0uO3npVaeUbt5jy/qosm4fQNwVkBtBaCKaEnmg58fWTtFDGudHTPo5QHXKMauTjls85ulCQdOqQDM1BcYpOR68kq8JMbsf8PYk5gXR5V4usjjel3wSxvKLmIMPPhqQVuaDsaSco2kKl8VG8rkD6Epl65vh/mi35jrTu+tspRWbFYrX6F+1ofBQ2r/AN1H1EqZhGGqay1QLbEMa16g8rXKVwsH8gUPbX3GM1P6cqd14/OaGC8bKdFdbHbTNpZs0tKhH3zDzwsx2oB/V24Z2IuOSaKhLIUwh9jD6SszQ6dgN47o2B7EMDmOyJyJLdRrJGxOzX6ncT+4pjjEpEATwTkTYBvL6jxu0siIGvDI9N3hUPc+68vRB0+K/Rxvea44wZr77Tp4qijV0YIUMNAwD1GZy+tyICZgncCwZJXtsokK+fnrQkzWemfzvwtCrSwV/tHi0FUYEGwiP6A8Po5ZbimASp0/9UK7Qs/EK5zvCOPveSQ9rshq2fRJZl/WxEV2/L4G4HN5GgHDMvXJ5XM0if252iPinxkcTW1pSM6yHVRTX0LKh6BibxNq6YIxWNLusMXo0FyjstoemhtqKILwFz8fkJIbutp49I0EzWDx2tOydFQ40+m/g3D9MNP4nTliL7viyL0dniJ4UGk1we3jj/s2fhv8R4dqUeJGoPDDp6g+Ww14fIzVKa/UPGCJX0auQ34qaw9/Qh2SWQI6yT17b32jd9mwNfK07eywyhZGglDDrQUYOmsJYJ9D8EkbaQEClwa9RMXk/zn7QxpA5aKLiB9WEm49jlmRHVVG0n5Wq24zq/RFoFO6Xfd1Yy9Ai8Bm+r+ttQsP+vRme92Sg73fcobJ2MWRC+1bmZ01/oH0phmtX5uE3308XS5syncYgN0ZROmhyxcAAFI9jlCaYW0AJNCtaG87DQqDoomMg/7a+gRC8Uhukk9LgWJafDN/G+60vh0LGNTLvaHcer8OfeyicDZMyKHzKSknRebqBezL4/Ol0P3Il+qUCwbrvtQw/SfHg639AzfI2kEB/gnOHJQ+ynZ6OEzx/ldyD3VRCcyWuUEKRGHdxyF0t1oiKX6BreWM104rjhMFgGOyCS0/PgZ9HhbB97RuIEKsiaonnTIqD5NPLygP+zMRljQvLw/bqjSDZZfdDXeHwqAgMuadAvZokkQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1e9a4df-ea6c-4eab-3503-08dd9d3723b6 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8147.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 May 2025 15:57:10.6300 (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: GEXZgS9w2X445e1V/ykbswNsDbPq4I71urZifSfPoU5Wk7j7heFFedYV7Cj936W8NKNJRAcpeJUjPNBKnFuIOzC0sPItY372ichBfzvZSqQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8499 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Use _exit() in child process in case of execv() error. That is to avoid interfering with the parent process as exit() may call its atexit() handlers and flush its io buffers. Signed-off-by: Julien Vuillaumier Reviewed-by: Kieran Bingham Reviewed-by: Paul Elder --- src/libcamera/process.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp index 68fad327..7f3a6518 100644 --- a/src/libcamera/process.cpp +++ b/src/libcamera/process.cpp @@ -274,7 +274,7 @@ int Process::start(const std::string &path, execv(path.c_str(), (char **)argv); - exit(EXIT_FAILURE); + _exit(EXIT_FAILURE); } } From patchwork Tue May 27 15:56:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Vuillaumier X-Patchwork-Id: 23453 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id B39A1C3237 for ; Tue, 27 May 2025 15:57:19 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 6DD3668DA5; Tue, 27 May 2025 17:57:19 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="RecLk4GK"; dkim-atps=neutral Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [IPv6:2a01:111:f403:c200::3]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 9EAFF68D94 for ; Tue, 27 May 2025 17:57:17 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aSZL+JOWAasdA1/MxBI3iT4aobqdaWtci4+qnhnkftDAwkMbcBBzICdKtfBW3VpNbJHWdq2viYXGTXujAUV9wy8Iic8PiMF4O64+zXvLuGmC2lpWk0cjOiY8+1GaSOTNNpg7pSLBaBehVR68YkcUght3NSjVUdNmX4cSYkRwHg/pN48HYzW36jcpDXQTC4bc1VhjXcpFJ0G3AHvPs8gt8rKz0h0s+gY4BM+YW8fh3gBT/eiV0p+CkvL3UEUkF90tIGD4dNmpSxHoPogCCPsgo4Gu7K5kuPb3baH6VFCgQQllEhBMdhvesldweisAuLbVYO4zodOsrQA+7Of/05Z4Eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=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; bh=76OcfOe2+3qaMfVCbJSFj5zGUnpKmw24YivdielJyOE=; b=HieEDuIIwlGsV0doYTnMTVwkwSLBwMKEk6XVJ85+WuW3SINIxEDbpklAcQ0ljdyH9eVe9hxMVc/LjZ2XKxfkPGal6KHTyUCVfqKw0Oxmnm4ZbkyzSN8um6hOTP114E2k6EYZtVxLi45Smlr61vCoeIQIeZ9cJ30ke7u0chsMspDUuSXTa421wLmOtyzilyiMuugxRPFE/XGzXAShPyz+/m0dfAEW9e2mAY/LgUyG70MowXWZ8Nk7mfjzQYVYhf2N4t+SNWogpithp4x9zxCjgKD1mYEG28vBCsUhoZxdSEzzq/bW9Eb+wfGGts2v3YbaI+/O0epKD1EPi7siY268RA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=76OcfOe2+3qaMfVCbJSFj5zGUnpKmw24YivdielJyOE=; b=RecLk4GKRdXPYQunr3KCsjURDNUTXJbqOc4Mx5clz/BPHYr4Rp6X3qjge50fH9doATPRWibBgILP82a15fFc6x/URNWfgrvAaYAxOpAChDHyMp5NFkvH0rwJLW0ua8vpME2IgwtHTYLwAe7WeSONm3FeqfNqB2UeAtlFD04xh7ppadXvnk3bAjxAm+SCCDwwWUHOhbVH5nWgcM1WOTVEwzMYjP45fcOfhQAG6ZwEc9E5r9ikzkPZkp3/3kFRPAk8eZP4JpbOqiEKQ30pfsMYgtrK41R5jxhES8hfVuhu75Ef/ITc+Om7hZPFky/q9VUSsEvKo0Ck4bllCLvSZD4TNQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8147.eurprd04.prod.outlook.com (2603:10a6:20b:3e0::22) by AS8PR04MB8499.eurprd04.prod.outlook.com (2603:10a6:20b:342::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.29; Tue, 27 May 2025 15:57:16 +0000 Received: from AM9PR04MB8147.eurprd04.prod.outlook.com ([fe80::eace:e980:28a4:ef8a]) by AM9PR04MB8147.eurprd04.prod.outlook.com ([fe80::eace:e980:28a4:ef8a%7]) with mapi id 15.20.8722.027; Tue, 27 May 2025 15:57:16 +0000 From: Julien Vuillaumier To: libcamera-devel@lists.libcamera.org, barnabas.pocze@ideasonboard.com, paul.elder@ideasonboard.com Cc: Julien Vuillaumier Subject: [PATCH v4 2/2] libcamera: process: Pass stderr and reserve stdin and stdout fds Date: Tue, 27 May 2025 17:56:15 +0200 Message-Id: <20250527155615.560463-3-julien.vuillaumier@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250527155615.560463-1-julien.vuillaumier@nxp.com> References: <20250527155615.560463-1-julien.vuillaumier@nxp.com> X-ClientProxiedBy: AS4PR09CA0017.eurprd09.prod.outlook.com (2603:10a6:20b:5d4::11) To AM9PR04MB8147.eurprd04.prod.outlook.com (2603:10a6:20b:3e0::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8147:EE_|AS8PR04MB8499:EE_ X-MS-Office365-Filtering-Correlation-Id: 8b575084-e1dc-4cc2-4416-08dd9d372743 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|376014|52116014|38350700014; X-Microsoft-Antispam-Message-Info: DwYZLJOmmE1b7P/e1UgvKKItlgN19MQRBay6lPvwZH+Hfyu1vWshOqt+eFxRjAMLYpBhAYik1JmkKPQftujwQBHkOJj+6EPVN/e0rEbZr0UcCc14EYOqksPXJqp8Fvafu6y2ht/QEidQNktCseCX1Z/Lsf4kwVLJysxYUzEp/OI2Aj+sGT8o1kYKoFKNMWQKKvGsv4Z9Cj2NCbXkGC0brHhVclQnMouPa9ZLwcsWN59AIB9jCe7y3J2sDXerLy2h2AIyd3fXU4RUQBsB9ZPzhkEUSZOacIroupexVu2pIRxZSDShj6yulLKNwW+ArTZZ9F3loO2l/QVQWS3w16ocPqPJtte7cjbPAioa9+/8O3WufzSyjdMwiHMiANRbPjyKmQBFt38h83Q+T9eeXKXdMkBGLzs35jH9PbGczyLieyXeVVu8wdLO9M3L7lrINhCChHOUoCp5hgdnpVMgrf4Y9PPFesv4BnmiBDsJ3G8VjqXCh9+SU/1S7AakcI4HKsx4N3G+M84YC4NXKyDYzNypmzoCVe8fYDYqlCR11W1Ra/HW5VfE2ZP34H9QgpP2GJj91hLksrOmtUVbjkMGTLratlyEA3agnkvlsA2TrlQ+2dbZ8clyN2mF2LnN99bq7kum40symoBhrMV0xDeE4hSU4Ph0rmb5Xw+H1jf1P72GrkYHUQv7ZizjnSR+g5iahkxoUeig8+akAkHdI1/CKM/U0Z5pZBGQYbaceeG4s3L0nRxGRCwefXqtIyQQCD/OiBagGw46nEMYU3+6xMhPEbBs36xqvfHTDHe809ZW3ChMMmpN3dO1dsKbzc8IV8KIy0pn7JR1aOv5yFDnJIJ9mMzcR7qRboZMR0ImchbM7aQ90IPi8EyrRRLukkBBG6wwnf46QEQ9GngPdRXobCqvSu7upXmgQG94iGqRBQrYNdPu3npruofLfCgWlVBjV6DQenIkXD58qZY5m187HVOPGYCY0T9+H8EUv6E4BYAwOJlq/u9bobKBY5uv2xxJTBteOmZD3aHbvAzpZjSHvi81MhQ2ssI/3cjcEeUOKwSDF798LmuT+bh5aDB47sh4BcYS4mallu7x+IdSAyuokA+azB3WP7bJaL6MSrfJn7tiUA8DtGNxFeUA+pJ/MCdQec/khi2oiLpsDtHkmDupvuta0Y4TfkbLuYKYCeL4e9z3eeoA9dxP8nxNAn8qrznJjqdckTFKeSBwLHN84M5KFL7XfrDIMHYyjjzmq1zJyON4ZucEyfvrzGAYhF7Zhp+KHqS0Y1bEgKt+LtOhsTEDWpHMn0gO5lBifYVCJ/bySDvwOiyda6jL/TkjpwiTj4VZPEq95g64L/hKT3oFQNM74zgIOW7Qkgm0g8FLNiYq7E4zzgMCAbVPhk/f+uNz2HrZ93BrLybL8cSJ+rQTm6SYFFkibCpKdKbc/N1JhyTVwQ54SlWHQ2VV5flmqN4ecqXUBFhIeuVrRjucHDCqzOL7eXyy+TbTGA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM9PR04MB8147.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(52116014)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uovK70nJ2q2m8X9qpjzeOPpL6XZYpQANVEOGAlEZQoX+gid3Pch8WT/slyeZeFxC3zNzIQ9voCv4AnQ1bKFuYZK+gxOyycWHooaADbaXv5s/8tInnRx1Dvwunmk1w8SQuiUtQTnklRQxizvuFngAY8iIkOvlQ5R//fT6wNkpa+/v5B7KKDLxZkVyZOB+uAl/1tGTWj3/hY+ZLIE44pPkSi+fEzRcysnkEDU3oSLlX3szVSzW/kdVFvJPvIDBSUWs0uCpLoAFG1CAw7eFCaEp2F3awM2W6QhFBG406tijFwFUUQC7iY1pv/2es7R9pygvnGv1bifWbQ8IRc9Wr5CaSXKRyGq5rZqdUkV8g5Rcgftgv3C2Mk4aLTeVmRqEfGhA0teXNNU80yv1HtdlQuZV4mzxKXOm+PRkH6rYpmkbw3q2P/g/XPr3p5LiD0W1W2ZnN0L0l+wBrXl+5aHEqBFM1ALqFHp57E1psfsgMlAI6fXTr3GhHZh+iYJdXDEz/co6qGIU2Ju41y6Feg6o8e8TD4y0txR8QUkwhc2EAI5Tt0iUhDGqeMudzxOJoIUf/f+8nX5rUtLfLysX6CGHWLcvcen5n1IQ2HTNgzQsWASa+yik3BSrJwYFbJIAJho0Of6Qc8MdH4xOePmOm8nF2WRBDwzU2GPSpEolTWujmFVL8e2aqUnrVXUwlGTYp1nWNMnAiKHwhYLu27voLYnmTSG2C3gIfBnL5dUrH0lnvcXEDKrM9ozoQ0hyOtueULDw2b1obFDNeWFRBD4ekqlahs4hgrIIUsCLzDi00aa7akCSCcmRQ1cBTKwCWDjkKa0SOTBCvZgAWFK91CCcdyg65Ik38lkLs3FttcSij+384IU0diRuwSMDEeSacTcaYsyDH3mPX0CtKxbPIRpWnJpq3ZP5Qq+mkHVOgZA2e1bAdTq/hF6CTKHuQwqgOi/MpA/ehxcppblNFPcCIcommrAQpc8SL7miUGBXQ5W1UfQOO8m5jcRsFhNI8/AuQM1qTS/Jj/47ywiifenVs0akL64SWPStescSfofi1sxRAHOT2qDQmlL6ZTpP9MnKMWa6dyE+OJdP+t3F8t1Blij5B9lsjYScXpsdD74HqCNWwIdPr8i0pck2gKYTtyueyU3UzBq/bZAflPDgt9ZC9FZeSnTnJ6VqqSZpVajm6GQb02UnY9v16sPJr4ss88FJpO5Axb7sE6DuqldBDMxYj+keTkX6OwnP9DhzO0xmKzmfyPo5plPrYuLswzp2fT/V/sC4+HMQ7997Osn9ohZwxawK81ds1szD+Qd/1KeSigSywdZVk0qdtdFq07EhvFDpVCJsvuGOGkgZc79/n9L1/k++jehR/kU4XeOyNIGmpsu0l59f5yLb4Ll+NjzX9UPko4ErlFLbLq+lLoXRg8eXgTqo99vRWQzMWzWksAKWhmt098ucG7beI1WVXcyAL/7TeA+BoKNrhjKg5Gbtgd2NOE/v9KPonClrVgCGuNfD4ocwsnvzBOGkJ55l6FW7Y0kCnEkfurGv3PnRuUI7aEMCSVU4xk58A/jjhDp6XOxCcHT20kfGuL39tyNnruUkPdDp1Ex+Twr9MWEw4ttE1selYG8jnHdNtqB/Hg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8b575084-e1dc-4cc2-4416-08dd9d372743 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8147.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 May 2025 15:57:16.5583 (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: By7bCXVpoKK97m/37mGgRrB9uxTSOG7PenB64AAOlCLu7Ij5fwxVQKTn7gzKMtXwvg2KrnlDLXxDbmdgy47a5t/xyAubONwbN3DhxNFpJgI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8499 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" When a child process is started from Process::start(), the file descriptors inherited from the parent process are closed, except the ones explicitly listed in the fds[] argument. One issue is that the file descriptors for stdin, stdout and stderr being closed, the subsequent file descriptors created by the child process will reuse the values 0, 1 and 2 that are now available. Thus, usage of printf(), assert() or alike may direct its output to the new resource bound to one of these reused file descriptors. The other issue is that the child process can no longer log on the console because stderr has been closed. To address the 2 issues, Process:start() is amended as below: - Child process inherits from parent's stderr fd in order to share the same logging descriptor - Child process stdin, stdout and stderr fds are bound to /dev/null if not inherited from parent. That is to prevent those descriptors to be reused for any other resource, that could be corrupted by the presence of printf(), assert() or alike. Signed-off-by: Julien Vuillaumier Reviewed-by: Paul Elder Reviewed-by: Kieran Bingham --- src/libcamera/process.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp index 7f3a6518..d836fb07 100644 --- a/src/libcamera/process.cpp +++ b/src/libcamera/process.cpp @@ -259,7 +259,21 @@ int Process::start(const std::string &path, if (isolate()) _exit(EXIT_FAILURE); - closeAllFdsExcept(fds); + std::vector v(fds); + v.push_back(STDERR_FILENO); + closeAllFdsExcept(v); + + const auto tryDevNullLowestFd = [](int expected, int oflag) { + int fd = open("/dev/null", oflag); + if (fd < 0) + _exit(EXIT_FAILURE); + if (fd != expected) + close(fd); + }; + + tryDevNullLowestFd(STDIN_FILENO, O_RDONLY); + tryDevNullLowestFd(STDOUT_FILENO, O_WRONLY); + tryDevNullLowestFd(STDERR_FILENO, O_WRONLY); const char *file = utils::secure_getenv("LIBCAMERA_LOG_FILE"); if (file && strcmp(file, "syslog"))