Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:130466 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 45C441A00BC for ; Fri, 27 Mar 2026 09:35:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1774604137; bh=t05tEA6krgsqEu96+eM7ltTZkvez+4fUcrSTs3JZ7Y0=; h=From:Date:Subject:To:From; b=R3NHn/oLPvKDHHQAfMnjhSeWokFbZ4D7wcTWoHRlngIQAg+XsAzKM89e5IPo6Ja4q z/bC2qJ1RK3+rPHgGZ2Cno3jdnox2b7S9An9Zae+K7cUuc55VuryK31qSy47DjJFa2 +IFQOFotnY6fIjwJjc7I1mF0s1KDDjtgMlRJi1WivArwoqGE4rpEClBzVSdlFhgjUa 7HcPfoX2tYlwogd8FKNl3Unh7HbIdPsXiYd13al+xaxJQM1Xyo4nvZsJY2AseBb1xI rLXis2vxZWw4uegR9OLsTNqoOKr2poHXSEQc5KwMnNV7/ehGaZQLLmG7MULUabXLHd 6HvrjadQerLqw== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 3EF9018005D for ; Fri, 27 Mar 2026 09:35:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_50, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS, FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from mail-ua1-f43.google.com (mail-ua1-f43.google.com [209.85.222.43]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Fri, 27 Mar 2026 09:35:35 +0000 (UTC) Received: by mail-ua1-f43.google.com with SMTP id a1e0cc1a2514c-951a4e8d1b5so569679241.1 for ; Fri, 27 Mar 2026 02:35:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774604130; cv=none; d=google.com; s=arc-20240605; b=JH+uztr82Z7rzLM4yf+EYsmTb4vHHY+aXEEeUNSHOKJXVC7md/+uPt3Oyjsw81g85F zeLVxRcJzcbM/gtw7mM5MM7xBq1u6iLlGbIv1IESORMyqyVQKveeUbYSivuunnD26ZBu QNnGyP/IIzAqOwdKFpQ5jLGEU/0ZkEsOeH57rIbnS96rH48ZD5kE0Iw1DIBc1alTQWj1 yndafCVLMKoaRZm7kHxVh0U/HuNdVh9lQ/1CxCAUV0aZ+fbcu6ebVKuV6Tj6lcbi/VRX ZTpOykiStEprkkfiQ8Kcc604Ag1+oO1QE4HpomtXx5cgl0NWzFPZ3DuJKierslJEoVIr diUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:to:subject:message-id:date:from :mime-version:dkim-signature; bh=/O7kofz0yJaqbiE+QosftXBkq6Eli9DJPg9JOveeV0E=; fh=RnZ+4KjfdZdxwVfzmjFoBvUAaJ227RJecqE9MM9tvfQ=; b=STzzyTZEPNlMRywdpOjOwKb9ODbpWh8XeWsuIWNsjlRREJshQrcCrj7zcy8jGNuoWr ODyTQxPY5E84jbNKpD7jduoTlvoKufTJL983u4+3cigoLMjQPXLZ4m8pMTLsxmLctw4d 1A6BBwRwFk9An2e+VFMM+24A7yZaHXTY3SrhLsUXvc0F8C3zaG2jyimvYpWOAt5upJG4 Uk7PhxmsC6hZdw4m6xr557b6DMztAdJquri9uVQ+9SQUvfKJjmTdM+sQcjtUOv44P0U2 8yitRQ93OVWyYdOV46IiBbw+Z+X7NCHAp0B5mdGiz6V5RUjZuiBXq11rzgyjVPBHyamm kmug==; darn=lists.php.net ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774604130; x=1775208930; darn=lists.php.net; h=content-transfer-encoding:to:subject:message-id:date:from :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=/O7kofz0yJaqbiE+QosftXBkq6Eli9DJPg9JOveeV0E=; b=AIJXUWEB/gY1+quqiNOPcUTPuwPpZloApehFS/lZ9wwHtjIOseU29CmKTgW0wsbFaK LhMxTzexXiklC08fl245EprhXVoDCg6kynX0NHCpOI3MDMwLU7V3UfPDZ0w8HSi3XbKk BpxXVSU8wkdpoPsZbFxkWCeFvy5jpKfNridSNK8PmX7bBfoJKlB/+3o750Hp7ed0Jeu2 +LBrVq8Zf7GqYaP16RiZ0ufmIzWixt1WI7uMA57hzbEn0JZ054T9+T2D7B2hZvBpdNDb w1tgtIekWqbyt6CdBKjrHlS5OAwebaynOIKQHyjogTtY6Wuuk0oFzHtizZXVYIKe224i y6xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774604130; x=1775208930; h=content-transfer-encoding:to:subject:message-id:date:from :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=/O7kofz0yJaqbiE+QosftXBkq6Eli9DJPg9JOveeV0E=; b=LaRDACwl89MbCNtB6Bk1PIak97UAugP0H22agUB1pWhzDxZRdyso+TKdSsaD88KtM4 DruaD3L7+u/4/B22bnPIQuu5EEOu8ne3J1e37dMa4c06IMPbG6kO91Lj5RsHbLDNc0dc sz+p7usO16Q1vVPMXtobmY8r4lK+9tIRKrWuNNW+8iN9dCC7VuM0oE5OdvKYK3IWBqPp kfjP45NvMLap4WiYFxleukbm66ichG+YOEDHVsQmSgrfG3vcvOLZxYSq4KvOVicRDX4f TExy+5XvmmbCho/zIJJxKECbTDxEYZRWh8+STw4Oc2Bchg0ZCuuL4PB6mD/IUXJjLdih IpTg== X-Gm-Message-State: AOJu0YxIbJpC9hpmKXFo4+cs1IUTKE/b6Y6cgjr74gJ9N00EU4Pv1Gtw mQuShncYM1DJbNVKrmd73d+ZS9PPk9EVL8ihtGxzVBrrzb5qbgkigKhVOOfUH3LelmdGXpOuhIO R7twxvcrd9E4EI+JFThVA8iq1sybLx77cbcT6G9sLlQ== X-Gm-Gg: ATEYQzwUJTc4keNFpXNOpjtOFWvCWGxSbqtTR9LRNzYArfrrb0qF4ROVfUC08xdWQM1 IpWoTpwXi1asoVJt0AwdY62muKUZI3FWe+YrXEoAX+TF38wK4QsW5XnCRcb6Ukh1opCGNCZSznP zYbEgKKOeF04AQ4cbnFjF6GfSDHd0ZAUdMiWjih5Yd9B+PHGTlNGDutllJQLkiuDvXmAgE8ePy0 lVy0wMuxyI23IGTkTrnIEYYrjHozfJshDecqr+F8ddcSHm0GSRYJ6erVmp3uKoc1naIue/OHbyx giX2AeMYDNPVrx638nsy2g+3OzflIs5uAM75eZg= X-Received: by 2002:a05:6102:b14:b0:5f1:72a7:f879 with SMTP id ada2fe7eead31-604f92ff6e0mr580659137.28.1774604129914; Fri, 27 Mar 2026 02:35:29 -0700 (PDT) Precedence: list list-help: list-unsubscribe: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 Date: Fri, 27 Mar 2026 11:35:18 +0200 X-Gm-Features: AQROBzCWTwH2qJvpWImw-elf-lyvwVkWo5yrpb7cMQOohYKku3ywficxRFwJdzg Message-ID: Subject: [PHP-DEV] Debug information output in the PHP debug build To: php internals Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable From: edmond.ht@gmail.com (Edmond Dantes) Hello all I would like to share an idea regarding improving debug information for ZEND_ASSERT and exceptions. Why has this become relevant to me? At this stage of development, asynchronous core code tends to expose hidden bugs that are not detected in the usual way. I am considering adding a telemetry service to PHP with the ability to collect information, since in such cases logging is the only reliable solution. But this post is not about that. ## The idea When a regular PHP exception or ASSERT is triggered, output two backtraces: one for PHP and one for C. To avoid breaking existing tests, this output could be optionally suppressed via `php.ini`. To achieve this, https://github.com/ianlancetaylor/libbacktrace is used =E2=80=94 almost an industry standard! ## How it looks: ```text edmond@Edmond:~/php-src$ ./sapi/cli/php -d zend.exception_c_backtrace=3D1 -r 'throw new RuntimeException("test");' >>> RuntimeException at /home/edmond/php-src/Zend/zend_exceptions.c:178 --- C backtrace --- #0 zend_throw_exception_internal /home/edmond/php-src/Zend/zend_exceptions.c:178 #1 zend_throw_exception_object /home/edmond/php-src/Zend/zend_exceptions.c:1043 #2 ZEND_THROW_SPEC_TMP_HANDLER /home/edmond/php-src/Zend/zend_vm_execute.h:17281 #3 execute_ex /home/edmond/php-src/Zend/zend_vm_execute.h:112392 #4 zend_execute /home/edmond/php-src/Zend/zend_vm_execute.h:115483 #5 zend_eval_stringl /home/edmond/php-src/Zend/zend_execute_API.c:1491 #6 zend_eval_stringl_ex /home/edmond/php-src/Zend/zend_execute_API.c:1533 #7 zend_eval_string_ex /home/edmond/php-src/Zend/zend_execute_API.c:1543 #8 do_cli /home/edmond/php-src/sapi/cli/php_cli.= c:988 #9 main /home/edmond/php-src/sapi/cli/php_cli.c:1369 #10 __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h= :58 #11 __libc_start_main_impl ../csu/libc-start.c:360 #12 0x55c9f5e0b444 ??:0 #13 0xffffffffffffffff ??:0 --- PHP backtrace --- #0 Command line code:1 {main}() Fatal error: Uncaught RuntimeException: test in Command line code:1 Stack trace: #0 {main} thrown in Command line code on line 1 For Windows, a different library will be required. Maybe someone has ideas? Thanks