Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92993 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 40691 invoked from network); 30 Apr 2016 17:12:51 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 30 Apr 2016 17:12:51 -0000 Authentication-Results: pb1.pair.com smtp.mail=derick@php.net; spf=unknown; sender-id=unknown Authentication-Results: pb1.pair.com header.from=derick@php.net; sender-id=unknown Received-SPF: unknown (pb1.pair.com: domain php.net does not designate 82.113.146.227 as permitted sender) X-PHP-List-Original-Sender: derick@php.net X-Host-Fingerprint: 82.113.146.227 xdebug.org Received: from [82.113.146.227] ([82.113.146.227:59190] helo=xdebug.org) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 86/4C-58459-097E4275 for ; Sat, 30 Apr 2016 13:12:49 -0400 Received: from localhost (localhost [IPv6:::1]) by xdebug.org (Postfix) with ESMTPS id DAA1810C011; Sat, 30 Apr 2016 18:12:45 +0100 (BST) Date: Sat, 30 Apr 2016 18:12:45 +0100 (BST) X-X-Sender: derick@whisky.home.derickrethans.nl To: Dmitry Stogov cc: PHP Developers Mailing List Message-ID: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Subject: zend_pass_function/zif_pass From: derick@php.net (Derick Rethans) Hi! I'm trying to make Xdebug up to date with master again, and after fixing the static changes that Dmitry highlighted, I am still baffled by something else. My function traces now have an extra entry for each constructor - even for classes that have no constructor, such as stdClass. Code In PHP 7.1 (master) this generates: => $tf = '/tmp/xdt5724dfa31b3050.51884776.xt' /home/derick/dev/php/derickr-xdebug/tests/assignment-trace11.php:2 0.0017 386376 -> {main}() /home/derick/dev/php/derickr-xdebug/tests/assignment-trace11.php:0 => $a = class stdClass { } /home/derick/dev/php/derickr-xdebug/tests/assignment-trace11.php:4 0.0017 386472 -> xdebug_stop_trace() /home/derick/dev/php/derickr-xdebug/tests/assignment-trace11.php:6 0.0018 386568 Where as in PHP 5.6 and 7.0, it generates: TRACE START [2016-04-30 17:10:19] => $tf = '/tmp/xdt5724e6fb674b31.38510038.xt' /home/derick/dev/php/derickr-xdebug/tests/assignment-trace11.php:2 => $a = class stdClass { } /home/derick/dev/php/derickr-xdebug/tests/assignment-trace11.php:4 0.0006 274008 -> xdebug_stop_trace() /home/derick/dev/php/derickr-xdebug/tests/assignment-trace11.php:6 0.0006 274128 TRACE END [2016-04-30 17:10:19] The master version has the extra {main}, which comes from an additional call to zend_execute_internal. When looking into this, I see that that extra frame is a handle zend_pass_function / zif_pass. How has this changed recently, and more importantly, how can I detect this? I can't do "edata.func == zend_pass_function" as neither zend_pass_function or zif_pass are exported symbols. Any hints on how to handle this? cheers, Derick