On Wed, 4 May 2016, Dmitry Stogov wrote:

> I don't see a big problem exporting zif_pass, if this's really necessary.

Bob already committed that, and I've a PR for Xdebug too:
https://github.com/xdebug/xdebug/pull/271/commits/c4a539d75f0d2546e9d0cb0dbc06f5a7a31f447e

cheers,
Derick

> ________________________________
> From: Nikita Popov <nikita....@gmail.com>
> Sent: Saturday, April 30, 2016 8:40:54 PM
> To: Derick Rethans
> Cc: Dmitry Stogov; PHP Developers Mailing List
> Subject: Re: [PHP-DEV] zend_pass_function/zif_pass
> 
> On Sat, Apr 30, 2016 at 7:12 PM, Derick Rethans 
> <der...@php.net<mailto:der...@php.net>> wrote:
> 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
> 
> <?php
> $tf = xdebug_start_trace(sys_get_temp_dir() . '/'. uniqid('xdt', TRUE));
> 
> $a = new StdClass;
> 
> xdebug_stop_trace();
> echo file_get_contents($tf);
> ?>
> 
> 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
> 
> Hey Derick!
> 
> This change is due to http://www.serverphorums.com/read.php?7,1439618,1439618 
> / 
> https://github.com/php/php-src/commit/8e5b139732893d2a5f6ba3ae0a0b2b5cf6dba09f.
> 
> I don't see a good way for you to handle this as things stand now. I think we 
> should export the zend_pass_function symbol.
> 
> Nikita
> 

-- 
http://derickrethans.nl | http://xdebug.org
Like Xdebug? Consider a donation: http://xdebug.org/donate.php
twitter: @derickr and @xdebug
Posted with an email client that doesn't mangle email: alpine

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to