From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id oPpXCRlXIGrjeTIAWB0awg (envelope-from ) for ; Wed, 03 Jun 2026 12:32:25 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=WEMry+pV; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=WEMry+pV; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 132011E0A6; Wed, 03 Jun 2026 12:32:25 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id CF0D71E062 for ; Wed, 03 Jun 2026 12:32:23 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EF8764BA2E35 for ; Wed, 3 Jun 2026 16:32:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EF8764BA2E35 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=WEMry+pV; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=WEMry+pV Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013058.outbound.protection.outlook.com [40.107.159.58]) by sourceware.org (Postfix) with ESMTPS id B56994BA2E11 for ; Wed, 3 Jun 2026 16:31:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B56994BA2E11 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B56994BA2E11 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=40.107.159.58 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780504313; cv=pass; b=Eus/c53uen9S+syMSdn/QIKlUqnLlZ1gvClyGEjVVr48mYkUH5U0RjynvXN+nBVcisWyyrpQFiiUcnyuBK/d96Qif9O77kQmkWp0v48J5UHjN1Qu0qrOOSsICvB4l0ejWBNFeYRo+hQFzPov+2rMo8UPTeod4kd33XcMwkVEaA4= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780504313; c=relaxed/simple; bh=PWMV3FkuYUua37s/89GvBmiPwarseYYumsld2wblKBw=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From: MIME-Version; b=iitizqG/ZmOAz6qoe7WogYAYndNWvHXfmdqrNKcKbUv45ZVtwlGYDvGRHVmFomRlihaTJQJ78VS/0hsP5mERZimM1spP+7TUwuKee5gSTrmOa2OFXPxAzUjmXM2V+WwoznptxH7BnH9A/k9tfG099C+u2g7NUzP+Gpgl3dSD3dI= ARC-Authentication-Results: i=3; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=WEMry+pV; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=WEMry+pV DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B56994BA2E11 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=NUMN/StnAEjAow1rrxQQb4rcmuKnOEbM114zP5YkTo+qwQSDBGv0kLMIvU3TkQ5FgafYtKgXLPDZnvohDAQ7cIq1ha3HaGZCvA5GZMM7/y5t/B6ZxP3EBQF0QqNvtMsV09+EEfWTo53GxqXeVLuRcKW7/jpNKOnCeo5ikyOC+ILALmINZfC5NKFM9v7E3J9I27hKa8231NFLvXJfqDutVooBu16WM9DKkGPeUj3qAQHCIOOvBsyMzqmQshKh3ZYdYTJnvvtEGtfuwIGGLMYznUWxvd4LOq0jwJwMk/ToWGUKWrclovKrfe60OOa3VqDMBxIqtCqx2v5BaAHmHlBp/Q== ARC-Message-Signature: i=2; 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=pLJeaMtjcxSZDIVuNseWRg4zz3+VaC1pAlkDzpDuof4=; b=p6LcmPraeGWuwNmWmKzfTBTD1FMqnfD8vdkK5YOPo+OaVfYRhdXr+mf+aixTiedbHlyyomWw1KoCdZyDjxZ7cxoonQhCgw7CuVEmz38hQRXQOwkpMdUqIxSJJGEz/C0OLI80UbxztZZEj1JAeWPKIxONiIZ5JugfKB3qVoAdz6NL71EfKLIiHcZxO2gor+NI/MrN7nSvCKM34MWVEOQI6yYFGhiYiWnj9uXToBJ3OlEPnF15PEbfNJa43EzsqSGUCVER+3MgLKJdzTq0E7Arx4jN3okv3r/J0tgYgZYY0jOr8d9Vk3NuL03+P75vutKRO0/KX0SOwaTtgvRsEZB63g== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=tromey.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pLJeaMtjcxSZDIVuNseWRg4zz3+VaC1pAlkDzpDuof4=; b=WEMry+pVZuVLDxiAD34ZGf7W0+TwbScWvrtohSyEvK+TXZuJRdsbG1oH48Ba6H/d/GYttP0/YW01F9k35e46kgls0S1PUwiCG4BTdK+n2AxCKOsQTbLnGhxV9H7lWSmd4Yjacl7hsZS1VGSAAS1mCsIoUsBbEak1auXnE5nnsNc= Received: from DUZPR01CA0040.eurprd01.prod.exchangelabs.com (2603:10a6:10:468::18) by DB9PR08MB9635.eurprd08.prod.outlook.com (2603:10a6:10:45e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Wed, 3 Jun 2026 16:31:44 +0000 Received: from DB3PEPF0000885C.eurprd02.prod.outlook.com (2603:10a6:10:468:cafe::2f) by DUZPR01CA0040.outlook.office365.com (2603:10a6:10:468::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Wed, 3 Jun 2026 16:31:44 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB3PEPF0000885C.mail.protection.outlook.com (10.167.242.7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Wed, 3 Jun 2026 16:31:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kymaW+VCRTlnrjFbiPE1zQHfZW+2RaxPC2U5QS65ggTu6iZstNIspaknhI45b6wqh1o9AQ8EIiqFZwYy8jePeBLEiKC7mnkPAmVDZwtgmjSNXT4LFq94T8C+y2KfX7N2YYV1s+OfAsWJqzQqm2BDc68iyosG2P9qLdHokR4+RCLg3HPlPQyxCCOwRYnj/Ke8zLcHNnPSPT6jcN8S0UmhrqhieTGayfRu75Wgm9HzPiUJ7v7vM383zxQgmA7aI/St+O4d/kB0kUmRwLZDfnOsioxD/y6Rcat97RYzEI3omi4U0ZeJYj8HPjIQ43saKFlINLRJcOl0LhiT0BaPsi/lHg== 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=pLJeaMtjcxSZDIVuNseWRg4zz3+VaC1pAlkDzpDuof4=; b=gp9wQcwD6BrOBUqWYAzEfHNjd88OQHg1D5GOHRIZTLmJEiozw9cXO3/Fp9i5JP8Lh23ogfmBNU3dyyg/+vEH+YGMY1nKDb8TjTSgn9T0iabw2J9+0/lXNCVzT99f0BH6h2CxLragwlBcnakxfuyO3AFFh+X2Zy53FwHg1ViIKHgTd+O+rRp6LexLziJhHMZHTFJeV9/Fh6ysCQ2JywUssK9prXgzcdTl9VKKTeUCqaFGULGEAaA8fVwB8X+yaqRiROwyZ/p3L18jViC4m+C7Z9nVOXHirDA8D4wUMJ+eu/fvX8g1q5t3u6NsSUc4uum50PVvDiX1oh+NZ6pqv67RCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pLJeaMtjcxSZDIVuNseWRg4zz3+VaC1pAlkDzpDuof4=; b=WEMry+pVZuVLDxiAD34ZGf7W0+TwbScWvrtohSyEvK+TXZuJRdsbG1oH48Ba6H/d/GYttP0/YW01F9k35e46kgls0S1PUwiCG4BTdK+n2AxCKOsQTbLnGhxV9H7lWSmd4Yjacl7hsZS1VGSAAS1mCsIoUsBbEak1auXnE5nnsNc= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DU0PR08MB8663.eurprd08.prod.outlook.com (2603:10a6:10:401::6) by AS2PR08MB9023.eurprd08.prod.outlook.com (2603:10a6:20b:5ff::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Wed, 3 Jun 2026 16:30:39 +0000 Received: from DU0PR08MB8663.eurprd08.prod.outlook.com ([fe80::f957:cec9:ec8d:7968]) by DU0PR08MB8663.eurprd08.prod.outlook.com ([fe80::f957:cec9:ec8d:7968%2]) with mapi id 15.21.0092.006; Wed, 3 Jun 2026 16:30:39 +0000 Message-ID: Date: Wed, 3 Jun 2026 17:30:38 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1] gdb/python: fix memory leak in gdb_py_tp_name To: Tom Tromey , Andrew Burgess Cc: gdb-patches@sourceware.org References: <20260526160459.270322-1-matthieu.longo@arm.com> <87fr3e6sdp.fsf@tromey.com> <11b35b46-7e18-471a-94e2-91fef5b287d2@arm.com> <87tsrr5vtl.fsf@tromey.com> <62841b2c-9d0e-4efc-9b26-ca9bfd8787b9@arm.com> <87ldd35php.fsf@tromey.com> <87zf1ixzc9.fsf@redhat.com> <87cxye5pn0.fsf@tromey.com> <65c7d5c1-37ba-4e49-8d2a-800421075fb2@arm.com> <87o6hts2q0.fsf@redhat.com> <87fr35hvjb.fsf@tromey.com> Content-Language: en-US From: Matthieu Longo In-Reply-To: <87fr35hvjb.fsf@tromey.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: PA7P264CA0456.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:398::26) To DU0PR08MB8663.eurprd08.prod.outlook.com (2603:10a6:10:401::6) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DU0PR08MB8663:EE_|AS2PR08MB9023:EE_|DB3PEPF0000885C:EE_|DB9PR08MB9635:EE_ X-MS-Office365-Filtering-Correlation-Id: ef0bf260-d086-49c3-dc55-08dec18d993f x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|366016|376014|1800799024|18002099003|22082099003|4143699003|11063799006|56012099006|3023799007; X-Microsoft-Antispam-Message-Info-Original: WRM62DXJlSwUsminSCieH9SX5CzXrcbIoXFgyHsvsD8Xv11E40k955QMRV3J77RY6qGcLn+ASswF9ULzec7hJkS1q/f2nLJxKv6si3HsoamWvxH3NeC3wna5SMFA75R6e55EX4JLB884HBbugMQuKel33O6Q8+0RNc21EOb4O0Pib3PgMEQF0nUAKI72pF0Vsy9BC62X9XPhVcqRltuMkE+XwOf56FlSuisdYNh7EKO4Z+HQ9CxYE2CRhfTyrftuSokjTYtDaRzUDI9GEpuxa1PHolgxmNN3T/QNlGPM32D3uN/kdtQ2RPWRIMZtQKVyu2RCmarcyFL0Gh74YLiFxUZGD2ONVYnb56LdLNkamBhlvIYVi/zB8mKooPgMfvsDDLL8N0HVfr4HzWawbZtTzOKzuADRO/qyRIIz6gxjC1/tvIa+JX6Q46OjeSAZxc4KwoZZfuOhf8rS+JUth8rtP5F2yR9j1EJT4MSHCr5fGBwqfV5iI2WorvtXQoT1pEStgUVCxeuZtSoST7KnTR/9hYhJR+uNuyuCxlvhNprIKwxEI9fJNxClvfOBHWxLTkCZ0KQLhYELIDOwHFHwG7nc8V4nSxni5ryIXnVBwMD7ccWBp2t9b/7Ia/BjyUskRUl12tfUqPGnZR+Mo5UKGL+JFGwzDPVKUKTiuMsDqnApkc6Nkb83IB0Z5ep4Yuhc8AEW X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU0PR08MB8663.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024)(18002099003)(22082099003)(4143699003)(11063799006)(56012099006)(3023799007); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: OjBipF3yYPVAH//sGXwneD55WBpW6p3oU1yYbRv+2Qm1IXo3ntx8l3MpWP4JYHteswiSTdIT4OzK6sGq6fWklLtGi8HbJQw9CI0UGOENSND+gvEy9hxXwar8U1VoYcnBXqH6ABsTjdpIjKzD0qyztqp1Hxc/uYG6+A0qMSrGRhLN6yRuxDpuARNhCuXEzEqnsNP7COmgvMWr8M1Tb2ukd/1qWcKt4vYKmvpnN204UwozP3Afk2K0yxu5ahAQlqcfQgofx4c0mWmo4WDP5qQS3+db6TLZgGoHusPgslZtrea/YtlSFVPwfx6iAAPSLUcd8/TI3pKv8W0suFMytqEatg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9023 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB3PEPF0000885C.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 28457d2b-a920-4752-6722-08dec18d72a8 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|35042699022|376014|82310400026|1800799024|14060799003|3023799007|56012099006|22082099003|18002099003|4143699003|11063799006; X-Microsoft-Antispam-Message-Info: Ny++UOMDwj+lrcIRoeOv8CLZj9rimoMdy7HXJRoT+9u/eQFpS8BOszxDSm824kzstzwimR5s2hnCTv0It58G9W+YKRNTHl8T7hhlWHAGnqsKHSAsNfpSqIaDs9I+bnHpeB9wUklGxOcPPC+f4rru5YtInFg8N+KweZ8vIuTv0IqdDVk0ufIlLkkr1jU0By1bZtdVMF4C80Iwm6nFvnge4Osb/Ffm0pIqW9Eo9BsHF1cGsIT3+sw7YVq17N42WxhulCa9YODcY731omKYyKcgyczl5TOvAUKm3XQfhdDE1C6GL4HUDYtGI8NWHselL7+e/zybf5DgZejsqHrvEtlZRnA65CpIL/pSgwLK4iZioDDfo6lfIJbUbJWP/4JMXx2YIRaRH8gTZlkZ+K8dBt5L5zOr1sRHI0DZperxv698bA5ghaBaQvcOHre+7vkeuEtbZqB3CGI38nitHO9+KeNQj6v+mqQYYy6YT8souOHdn5tnVEpS/FLpixxz3VT0HE05naeDhYnrXbrnybqlgcRH643APiHQIHAwO4EdgGyNxA9aNGnkqPtaHkXPS7ZtOer2/bK2qkTcfl8OtcK5KoE+xwl3xG2Yyc+W35pATWk3qQoODRZGfcxOuKLrqtg3RnOLosWLXyY6ppP3Om79mZskCQqN+8dbVs6vtrvZf8MxRyx65gcUHoSmCRVt3GbpkfXyPC3rHkbNbOVU46b8ZgyIMChQ92b79bE4hSt0deMQlUU= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700016)(35042699022)(376014)(82310400026)(1800799024)(14060799003)(3023799007)(56012099006)(22082099003)(18002099003)(4143699003)(11063799006); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hgE6VofKcoriDiJf7Fh1zKyGHCDanaznl2Cae87nuwFj2Lu/enCjltaigyLR6Ka5fI3HyH3DZ50/5o0XrV7FD89P4rOQHt2q/KuRzzLCGdygnvdV9U6PnVogBW1K1ZYU2K4Qv9htEOPDND5UwuTwtOixBIrsmTFBtnhUxGuvdTE/Ro49BdSwTXiMdfhs1vo+eRtaLmaakHxAQ2TwXOuqwAsbNZGu191Cv2ET0o/VitKkgRz1Ii+s9jkR5qW/cXGCXXZJXJ7JCjSydbxmzDELQfH9w2mUYNmY+xSPa5EP95/I3QHLl7mUYW6+PzspuF4pGk+lfEaf6IrdCGqHSQ//wCYRNIOYm/OLob9gKe8Az99e6rfq2FJh4iA6CM1JN1d7krUmEeYpOmaGnH1EHvIQVsU9NP0Mi3egjkkjOfeUEHpHjFCxY2DDumyRYp6uCyfY X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2026 16:31:43.7735 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ef0bf260-d086-49c3-dc55-08dec18d993f X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DB3PEPF0000885C.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9635 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org On 02/06/2026 15:22, Tom Tromey wrote: >>>>>> "Andrew" == Andrew Burgess writes: > >>> + const char *s = PyUnicode_AsUTF8AndSize (name, nullptr); >>> + if (s == nullptr) >>> + return NO_TYPE_NAME; > > Andrew> If PyUnicode_AsUTF8AndSize fails then a Python exception will be set. > Andrew> As we're not going to propagate that back to the actual Python > Andrew> interpreter, should we not clear the exception at this point? > > Andrew> And the same question each time NO_TYPE_NAME is injected instead of an > Andrew> error? > > Also worth noting that normally gdb doesn't simply discard Python > exceptions. (To be clear, there are a couple of spots I think, but > maybe they are bugs.) > > Normally either the exception is propagated, standard Python style; or > it is displayed using gdbpy_print_stack. This function is used because > it respects some user settings that control what is displayed. > > Tom Addressing the previous comment of Andrew, but using gdbpy_print_stack as recommended by Tom. Matthieu diff --git a/gdb/python/py-obj-type.c b/gdb/python/py-obj-type.c index ea0b59a8447..3ed57d0cbab 100644 --- a/gdb/python/py-obj-type.c +++ b/gdb/python/py-obj-type.c @@ -21,20 +21,44 @@ #include "py-obj-type.h" /* Return the type's fully qualified name from a PyTypeObject. */ -const char * +std::string gdb_py_tp_name (PyTypeObject *py_type) noexcept { + static const std::string NO_TYPE_NAME = ""; + + /* This helper should be used for cases when the called CPython function + informs the caller that an error occurred, and a Python error was set. */ + auto handle_err = [&]() -> std::string + { + gdbpy_print_stack (); + PyErr_Clear (); + return NO_TYPE_NAME; + }; + + /* Convert a PyObject to a UTF-8 encoded string. */ + auto pyobj_to_str = [&](PyObject *name) -> std::string + { + const char *s = PyUnicode_AsUTF8AndSize (name, nullptr); + if (s == nullptr) + return handle_err (); + return s; + }; + #if PY_VERSION_HEX >= 0x030d0000 - /* Note: PyType_GetFullyQualifiedName() was added in version 3.13, and is - part of the stable ABI since version 3.13. */ - PyObject *fully_qualified_name = PyType_GetFullyQualifiedName (py_type); + /* Notes: + 1. PyType_GetFullyQualifiedName() was added in version 3.13, and is + part of the stable ABI since version 3.13. + 2. If an error occurs when looking up the module name (for instance, + during the destruction of the object), PyType_GetFullyQualifiedName() + returns NULL, and a Python error is set. */ + gdbpy_ref<> fully_qualified_name (PyType_GetFullyQualifiedName (py_type)); if (fully_qualified_name == nullptr) - return nullptr; - - return PyUnicode_AsUTF8AndSize (fully_qualified_name, nullptr); + return handle_err (); + return pyobj_to_str (fully_qualified_name.get ()); #else /* PY_VERSION_HEX < 0x030d0000 && ! defined (Py_LIMITED_API) */ - /* For non-heap types, the fully qualified name corresponds to tp_name. */ + /* For non-heap types, the fully qualified name corresponds to tp_name, + which can never be NULL. */ if (! (PyType_GetFlags (py_type) & Py_TPFLAGS_HEAPTYPE)) return py_type->tp_name; @@ -43,12 +67,17 @@ gdb_py_tp_name (PyTypeObject *py_type) noexcept cases, e.g. the module name may be missing. */ # if PY_VERSION_HEX >= 0x030b0000 - /* Note: PyType_GetQualName() was added in version 3.11. */ - PyObject *qualname = PyType_GetQualName (py_type); + /* Notes: + 1. PyType_GetQualName() was added in version 3.11. + 2. On one hand, PyType_GetQualName() relies internally on ht_qualname + which is supposed to never be NULL, therefore, does not set any Python + error. On the other hand, PyType_GetQualName() calls internally + PyUnicode_AsUTF8AndSize(), which when erroring, sets a Python error + and returns NULL. */ + gdbpy_ref<> qualname (PyType_GetQualName (py_type)); if (qualname == nullptr) - return nullptr; - - return PyUnicode_AsUTF8AndSize (qualname, nullptr); + return handle_err (); + return pyobj_to_str (qualname.get ()); # else /* In the absence of PyType_GetQualName(), fallback on using PyHeapTypeObject @@ -58,15 +87,14 @@ gdb_py_tp_name (PyTypeObject *py_type) noexcept when the minimum supported Python version is increased above 3.10. */ PyHeapTypeObject *ht = (PyHeapTypeObject *) py_type; if (ht->ht_qualname == nullptr) - return nullptr; - - return PyUnicode_AsUTF8AndSize (ht->ht_qualname, nullptr); + return NO_TYPE_NAME; + return pyobj_to_str (ht->ht_qualname); # endif #endif } /* Return the type's fully qualified name from a PyObject. */ -const char * +std::string gdbpy_py_obj_tp_name (PyObject *self) noexcept { /* Note: Py_TYPE () is part of the stable ABI since version 3.14. */