Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:127270 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by lists.php.net (Postfix) with ESMTPS id 9AF501A00BC for ; Fri, 2 May 2025 12:35:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1746189199; bh=kslYXqSEdXPmtQGMWzoPQptnpuH3VgUq5UGiym/pQ7I=; h=Date:Subject:To:References:From:In-Reply-To:From; b=c/J2JelQw7XOBs7y+/mAXtqF87a25wO0tnk998a2JbUVvWvGJccdruTe7LXQytFow 9GrGEtW3Y/xOX9PlgfXUFtyNx4EdYVwRbctE4o8UO5wznHxDY2Gvgc+8NvrEibhQFy dTXqgpt5klXFRW8LNwGr6At2bvSj4huns/hYA1+XbrI1fiO0Yh0s5RGPYKL4AzD4bv vhnI522kA2QY32onHhsfYynbhqpqn+//T9rSdZbmR+zN4+4ayrtoQiFbIp2i+5v/9f /KPnAYTNfdDbU6xXwLLxT3oc+Zc2QYxeM8o8ASqO/7+slRiIePzndmdjzU/udM2oM3 mGDg6Kl95dpkw== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 09DCC180047 for ; Fri, 2 May 2025 12:33:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_40, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS autolearn=no autolearn_force=no version=4.0.0 X-Spam-Virus: Error (Cannot connect to unix socket '/var/run/clamav/clamd.ctl': connect: Connection refused) X-Envelope-From: Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02olkn2044.outbound.protection.outlook.com [40.92.48.44]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Fri, 2 May 2025 12:33:18 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Kn1Pzb5y8r3n38kHYZHyF4siu8fyvwPtilj0tGeoZ3ydwMuQBOiizAzn2Sc+38s3LItx1ilA+GMajUq3RKLo8MKy1qO888cr+bnDQxR66S1wkwYRTbfLL+IP/Rg+/ZOLZntYH/OtEMUudvRRFvtSaZnxnpcwP0G2CVi2KXDgGGl3Ho1RXLN9YDRyjL0tagpgOCqwoSpbbiRqD5DNsGtaac9dupNvVW2nUweaykiGpqBsNL7Eni/4GNNCi9/dVoHllZqlX7cLB7jicIe2tVuQ+joUEXqJ8zIY+qa12dol7TBSFufhyTdnUmEM96iYo4XA5Z9yF98JolYXnBfTFRK77g== 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=7b0Kjjzy4OBFmx+aX1bR0cly7QLUqOjhw6Ug2Vz71eI=; b=sRTs67595JlT3pojRh7CJBfk2TRsCFnkK/wUHIiHcQ1WI6z2seJc89q2D6eWNU7uGfdgEpAH3Xz5vSZ735bNdyZechm+8gbGxW0i+08GZGn4R0h1M7eFXbz0QriigYbWOCSyuZuIIJVhnFaOnioyS19QYbXDaLdN1WsrBaTDGV4e+Xke1FgZaOJKS4TPlbSDkWKA+l41cQNG+9+kwfK5RTt9TOvpM8nl6tZehRv1mzXpyoMPjQOEbTBBRENaH8lkUuu3Fbs07dAvj5pEGeemSasVO4ta5ynpDPn1d5W0ckKmhZOVzHURDd2YJrB1cOWjPnj+jUrKF61/78IhgasQjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7b0Kjjzy4OBFmx+aX1bR0cly7QLUqOjhw6Ug2Vz71eI=; b=T2zcuTGA2ek7OmfFZ4MksCZ2rraREZl0Mi6+MR/zXbJA/99300M7PBnNrgMk7btqSMwGsOdLMEWiPm4R/OnAEFmOdvqB9/tAWZI61RMUj7HiQ2sSOXCz6DtGEoL2DSdD07lIIjcVQw+E4pqSY+DWqnS1pXh03PChifU3ehfi7a5vVcxvw4KONgp8LLCuNTq1WWds7oEqZxH1D+eyJE1u9P4cHdTaqZZx4vUybtY3MaB3kPFZk3TshctdkE8YDZ/B4Fl0C2fuK0eP51bDEfGEUg3RR+x0n8OU2o3GI61uKOJGbsHmfoST5xsGPcY9Cu12KNAFGkzTKAgdE6rUMaUM1g== Received: from AM8P250MB0170.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:321::21) by DU2P250MB0256.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.24; Fri, 2 May 2025 12:35:32 +0000 Received: from AM8P250MB0170.EURP250.PROD.OUTLOOK.COM ([fe80::651e:bbd2:b18a:80ff]) by AM8P250MB0170.EURP250.PROD.OUTLOOK.COM ([fe80::651e:bbd2:b18a:80ff%3]) with mapi id 15.20.8699.022; Fri, 2 May 2025 12:35:31 +0000 Message-ID: Date: Fri, 2 May 2025 14:35:30 +0200 User-Agent: Mozilla Thunderbird Subject: Re: [PHP-DEV] Deferred backtrace generation algorithm. To: Edmond Dantes , php internals References: Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: FR4P281CA0060.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:cc::20) To AM8P250MB0170.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:321::21) X-Microsoft-Original-Message-ID: <37540e38-9739-44fc-a1a3-e5531d05ddd9@hotmail.com> Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net x-ms-reactions: disallow MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM8P250MB0170:EE_|DU2P250MB0256:EE_ X-MS-Office365-Filtering-Correlation-Id: e8c74f12-f47e-4033-8b92-08dd8975d3b7 X-MS-Exchange-SLBlob-MailProps: quCBMN2EvO+AFS2EpFL4Y7YHhB9dxsQ60Sp5XSefyECUcum+na9CrzDrpC/gUtqXYrhaEKBYiwqmEZ0g5MjdegCljEyICCSfjsaye41wZSgg1qXDBOtY9M+B+JwZjujZUVGsqEFmgw22oL9gh6kiLSLC7EHzfOJhPSsfzsHP7eZmuDNxFDDbrbEZ++pkeYKiAHQhwkMjdH9g/Priw75mvxyPfwnN1RI4u98oZyYwlaU6HYBq1td1foBsF8vCcuSwolYJ7wOEUl7vFkRovkApG1XGTAOrDdUoDrkPAlfEcBEXkmgSr2aai3OVKGG/5MzjpER1elTz09JooOtzZvuRZPPDE3laDtvmnNHm5yirTcsUBXWcJHEp82J2xvPtJpu51+rEpK7PxF70QUfczC+QG3QwfAmZblbyK4DSG/2EuMl5lJSALVLeAIptUzUU8fl/jRuBzQK1+KyKbgub3iRt+WmUpLIrM51Vak7AxJBOTCMFmikYJXXoo9iA2kZL5le6diNf19GElthmzsqRHqdlvBoeQDxCg30xGxaJBE9Nk20BYGqtwZrn6zt/bWTEPce8nZvIgE4/zTfyZVSzKvQxuktzQmAi0tcDgZmjLFHBrWC6PK+KJ6TQYwfoHKRIrjpwu3D+vUbJPGJj6HcVS+iNp+9VX9dOrvTSPBCOWGnTtQEpFQs/vFrRzxdOZSN08SNpfZsG2VEgLhXpmcGLLQEaxA== X-Microsoft-Antispam: BCL:0;ARA:14566002|19110799003|8060799006|461199028|6090799003|5072599009|15080799006|7092599003|3412199025|440099028|41001999003|12091999003|26104999006|56899033; X-Microsoft-Antispam-Message-Info: =?utf-8?B?TTBvakdhT3QvWlRHeGZUdFdKaDF6bDJOa1NtWHlsc0ZLSVhsN3RaSDJxTGxL?= =?utf-8?B?cXJIaUd0WldvSnBNam9rV2VoUGRhdHdROWlkbUVZR1R6bUx0SFJFSG81cmNo?= =?utf-8?B?KzFYRldxcWZaNHBUL3NmOTE4OWwrS3k5eDdzSmFqTm9sTHZhcDlkbCttNEc4?= =?utf-8?B?eEp4OTV2SVhhWTJ4N2MxUmxWekVOSTBDdlBNVys3WUp1SlA2Wlh0M3R0eUdO?= =?utf-8?B?S29YUDhYSUZnQnloSkIzaVhVVHJSSWRUQk9PTURjYUxTSUZ3TXV1TlhKR2NZ?= =?utf-8?B?bS9iY2J5OGI3aXlxODdrd1FTbS80UkdoSjNNMWgzbDMrb1dHd1RIU3l2aDdy?= =?utf-8?B?blhRU05vRkszcmE1akp2VmZSYVdUdU1haXhzdnp3alB3bVY4TTF2R2wwZGJN?= =?utf-8?B?Y3dLUjhtb1Y4QzJOQ0ZXejg3QW1Kc3R5QUtWTDU5V0t2QjBaNWw0bmUvVXll?= =?utf-8?B?enBpRG1jWEZTeVYrL2xvdFBYQ0grRGxqeVRnYXpYcWFUWFd4ZVFWTC9qNGFm?= =?utf-8?B?U1YyOEltbzBXUzVEWlpucGE4SE5WWG5pZ0c2RVNDZ0tSb3gvdWlWTmEvK3hY?= =?utf-8?B?S3BGUUZCTm15Ym4yd3hmbGl1cStJOERjalEwSFNyQWJaMVpSeFlCM29zcllD?= =?utf-8?B?UFhNT281V2twelhYKzhiZW9UamY4Q1dNaXZqQWZ6TURnYnlWZmFrdEc1K0Fq?= =?utf-8?B?T0RWOXVZdlN4QUUrd0Zud0VNRldFbzZWMjNqT0FSeTlBbXk1TG9zb1VYL0g3?= =?utf-8?B?M2J4Tk5oc0N0ZW8wQlEzSnd2UGYrZjhCVi9zREt6akJnVmRyQXNUM1hrVSt0?= =?utf-8?B?QnpTdTVaaXU0QzczNTlsWVo4VmI5T3pjenpkY2lJcFBWWXFkTnkrUnJaQnE3?= =?utf-8?B?OThXMXlvNXkzZmN2Z0dGQ3p0ZDRteU4rbmIzUWk5YWp6NktUemRIUVR4LzZa?= =?utf-8?B?UGRqUW1ha09ZUmhmR3FJYjZuK1VabkFxMm5GWHcwV0tHY2RZRnVzNHVnYUlF?= =?utf-8?B?WWNZTVZQc1FpYlJkUGxKOCtIcmxjb0M4aUhKZkJVekp1RmROSWgxeldzSTI1?= =?utf-8?B?aFEwSGFyRFlwaktYVXQ4NGlUei9DOFlCQm1ueXZlSDN6Tm9iTUNrZEVLQ3BF?= =?utf-8?B?TUxuWVIzZmQrVWc4U1J3Qi9vOERPeWJyemRNSDBhTldXUm5LbnY5VVBnRUtH?= =?utf-8?B?OUJTckRQS0RaZ3liNjczR0tNS1ZoT1hXbzY0MGdEbzZTbTVpb0NPYmFLQ2Yw?= =?utf-8?B?RFBWR1RPaWVhMmZrd2ZISFo4bTBnNHhlNHNGckJQZlNsektaTTF6LzRubkpX?= =?utf-8?B?eU5mVzdRUlVINlE1VGZPRDN4SkxKenRQUjR2R0hUc1l3OXBqQVA2bVZ2TStF?= =?utf-8?B?V243QmNHZjVaaWlIYTcwVUJNVVBZNEM4SnlicTY5TE1pcndPS01LdWloS2JF?= =?utf-8?B?R210OC85elJRaXdNQ0ZrRUduRzAyUjRWcG1PMk1ndWFrYm5McEJiQXg5blY1?= =?utf-8?B?NEJ0QUg1VWR3MGpxWTJvYlh4eXRIS3ZCd0JOM2ZtcEtxQUpoNk43ak5lZXBV?= =?utf-8?B?MERmV2RUOEdhNVhFcDdBeTF1azA0WEJWOWNoTkluRUNtcEszaHo4Vnk3US9q?= =?utf-8?Q?lErJbfvY4H8JFICXpEL6pX7b/rJtXNJjxBzaHwhA4blM=3D?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WDVrYzhXRjdLbWxTQlFUcG5vVytDMFRLRkJRWlkrVGlKbmphVE9WZG1lZ0Nr?= =?utf-8?B?b1ZEdUdockg0cmZTb1dnQitNak1YQythS1FDMitldW9yU2NwYVVlQUxwYlB3?= =?utf-8?B?bTZFTGg3VGN5ZE1uaHZnUmgrRVhkc3ZibTJBenM1SzB0RjdNa1dCZUxBMjFV?= =?utf-8?B?UUp4eWhaUS9aMUlZSXpiWkhKc3JYYTE5VFBqS1R6dzNnaUt2T1JobXQxSGpT?= =?utf-8?B?S2p1UW5VTTBjNUVFVVVWM3MvTWlTV1J5ZUl0MWVEQkFMTUltKytzSjhqSUhN?= =?utf-8?B?REZjcDNnakRQSDM5NDZzMHBwZzQ2TERnb3QwWlEwL3NrbnlQUjlCTVZpMXV2?= =?utf-8?B?eTlReUZkRVE0Vzh1eS9VcVNuTmJwN2k3L2s3YmZNalBoVjU3KzhGZmJlMVFH?= =?utf-8?B?b1kwNEFwcVlUUzROZ1pjaEw1RWE4SUtnSGxyZk9manJ4Z2NIbDZKZlU0UW9o?= =?utf-8?B?dWRZYkgxRDVPM0dha1VuL2hiRGNGQVhNSHdCWjVoeWdQUUUyeE9oYS95UDA4?= =?utf-8?B?aERBbVh5NjQ3TE1iYUdUU2UyWWV3N1hmbEF1YkVBVTZtYkZQYy9QMGozTG1k?= =?utf-8?B?cy9zY09QMnB0VkNUcUVXQ0s2UjVtZ3RkRlMzS0FVd0c4TUsvTkllcFd5ekxO?= =?utf-8?B?TWRtTHJ3V0VtMXZieDZaVWdUencrbFFrNk0rTW1BbStkNnI5ZDF1RU1mZkc5?= =?utf-8?B?dkhmek4wSUovSDAvTWF5S0ZnTmx4c2s4VzI5YWVNUDZRRUhiZmx2bGF6MkZB?= =?utf-8?B?TlFKZ1NBMjFQQWV2dmw2TTBrRmdnMUxMd3dRSG0rUXhOdjVqYkNIdW1qTFkw?= =?utf-8?B?M1BkckdFMlhDdHgxUk15K2FCV0p1ek5kNFZMRHloaFluVkN6UXlGeGRnK29Q?= =?utf-8?B?MTRrYnFQNTh0Ujg0bE5HVzhtR2czRStIYytIWklXek5uUDArMm5FRm9TZDNx?= =?utf-8?B?WGpnbkNEaS83N2NqSHBrWW5YNEJrTGFBL3h2VmNtb1puaENsSURiZUNaMFlI?= =?utf-8?B?TVA3RFlJSVJVZER1UEM0TDV0TVdsTVBzN2wxa3dza2hCNmVuLzUrblhPL28x?= =?utf-8?B?NVc1My9idjNVS3hzempTSkZwYnJ5cXR4eG9IR3BhZGxTUTJqaGt1elVhWDBs?= =?utf-8?B?NVNsQkJFV0lJa1dPR3p4VWIwTXEySVdCbmJCemc1WlNoYUtrRzFlbkNsNURJ?= =?utf-8?B?eDZBU0Z6Z0cya3htVk8zQS9sZkdtNUhEUkxrK1R6OEVlTEk5akQ0U25Ga3Vj?= =?utf-8?B?emtpaVBjVW1GckhzSUUrTTYzck1DNG9xcnVBSHgwQU5SWEVwa2p6NzJ4c3RI?= =?utf-8?B?Q1JFTyt2YlZmZVJ0dEV4Y0xpS0tNSHVVMTFOVGxOOE5sOHVmVHpGZWQ4aUJ2?= =?utf-8?B?VGtjNkYyb2tWczJyeXFqcVVSZEVFdXpDZzZ4a3pBNE9DMHdpTExyNk9YOTFP?= =?utf-8?B?QWVnVStiOHBlazhucnhqUXh3SERBRmYxSGsxS1NQck9tODJPWFBtdlpSSUd2?= =?utf-8?B?UzRJQjAxejNjbDVCbFdnaVczYVJoTElwMFBhRk1MM1F6a3lZYnJOMGNiQ3hY?= =?utf-8?B?OXphVGhyem1ZU2hPbDFFVWVVQmdZVTBaMFVwODdlUWJRejNwK0MyUE5ueUxz?= =?utf-8?B?YzhMeHVhRk1yUUNtZjFOeDJUYjZJQlBPYUI2cU5PcVJoUXNzQytocXFqbldM?= =?utf-8?B?V1duNjFuOHdpU0FwQ0Z3eldUMXY3ODArTGwyZnZHQTdXcFFicFl2RG8xMXNR?= =?utf-8?Q?iBmDKwugHUDxLQvVcE=3D?= X-OriginatorOrg: sct-15-20-7784-11-msonline-outlook-95b76.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: e8c74f12-f47e-4033-8b92-08dd8975d3b7 X-MS-Exchange-CrossTenant-AuthSource: AM8P250MB0170.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 May 2025 12:35:31.7250 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0256 From: bobwei9@hotmail.com (Bob Weinand) Hey Edmond, On 2.5.2025 10:14:37, Edmond Dantes wrote: > Good day, everyone. > > In the neighboring thread Concept: Lightweight error channels, the > topic of exception performance was discussed. > > The main issue is the immediate backtrace generation in the > constructor, which can cause up to a 50% performance loss compared to > return (as I understood from the discussion — I may be mistaken). It basically depends on the stack depth at that point. So it _can_ be more, or less than that. > I have a small idea on how to improve the situation in cases where > exceptions are caught and a backtrace isn't needed. > > Let’s assume we delay backtrace generation. In PHP, you can’t just > keep a reference to a stack frame, since it may be destroyed. You > could copy it, of course (which is relatively inexpensive compared to > generating the full backtrace). > > Based on that, there are two possible implementations: > > * Generate the backtrace at the moment the stack is freed > > * Clone the stack frame when the stack is freed (this is roughly what > happens in Python) > > This would require changes to the functions > `zend_vm_stack_free_extra_args_ex` and > `zend_vm_stack_free_extra_args`. What you actually want is, I think, a proper new call_info flag, which you can attach: "frame has associated exceptions to check" (you can stuff that into the same branch than ZEND_CALL_FREE_EXTRA_ARGS in leave_helper though). There can be many exceptions referencing the same (and different) stack frames in flight. So you effectively will have to manage a weakmap of next-stack-frame to exception objects. This certainly seems doable. Of note is also that $trace and $string are actually private properties. So access via reflection works there. And it might be changed too. It possibly should be converted to a property hook then, which materializes on first access. But otherwise, I think, this is mostly a matter of implementation. If you're interested in providing a patch, you're definitely welcome. Bob