Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92994 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 43845 invoked from network); 30 Apr 2016 17:40:58 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 30 Apr 2016 17:40:58 -0000 Authentication-Results: pb1.pair.com header.from=nikita.ppv@gmail.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=nikita.ppv@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.161.176 as permitted sender) X-PHP-List-Original-Sender: nikita.ppv@gmail.com X-Host-Fingerprint: 209.85.161.176 mail-yw0-f176.google.com Received: from [209.85.161.176] ([209.85.161.176:36594] helo=mail-yw0-f176.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 54/AC-58459-82EE4275 for ; Sat, 30 Apr 2016 13:40:57 -0400 Received: by mail-yw0-f176.google.com with SMTP id o66so228203024ywc.3 for ; Sat, 30 Apr 2016 10:40:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=IVdu9fInRRgXBJ+KIyrtG0WY3jnJWWCo50PtQZLz00s=; b=ENSV/tO204lnr0fz1TByhzArWOloqrYXtftgDWis0gp/tGNwlSNJniCX+BJidQcYpM bA7LmwcV9yxlyw+hW9blkRwo8LBSVyxA8liex8ckmHOAp1UceLDJnp2sqrqsykQ4MkGx ZhKB+5rpGnNJ90Zw7b/JhizhGNimwx/v5esE/OyjiYlk425bOmDaVw1XgGOKgehtytVX 3KEmcNnBzencVXdrnDpsfNpoNwjowa9Lx9jWiETtX1BfCx+z3KYja/UGsFfdu8Nuxbum IvqEwgpzv03ApvagAaqq9TDHyKzIghxhVYBHzImmjdE9p5VnS7LSoPz9RF7I/b2x6sOc FC1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=IVdu9fInRRgXBJ+KIyrtG0WY3jnJWWCo50PtQZLz00s=; b=Bso1a9YtHwHDDPhQysv7EH+zFHtwD0k6QdwPiSk4krV90tolt1BK/5m9BLNKrWeHld Gh5YApvoz43myMWitk6BYJuiOvHvEx97dbJ4TCG2CfGf4bg1fZyDdGnoRlUe5vwPQwro ZrWbIqXNUCY7gjvALm8nCWYh05OmN0hnxdMWqZL2mJ0N0QYigAHia1ETd1GQmROqXYMa OGfHgVinFeLHimwlfceZuh3gIptwka3j0UjSNjSCNR8hl7u4UL1s3RhxqkyF/whDktpq m1bGFHFOD8sAvwA6aZ4uj1PAwR4R9NoXvserfO+7/j0k+kBDOx2MK8qzRNV5tM+eVjaV 7VYw== X-Gm-Message-State: AOPr4FVuh+jY/Y3M80tpC4ZRPNl2MlMt6V4r7TwFZXDriKHTfdtSz0vLS0qDSPGAzAri7sVehZ9T3/JoCaWXrA== MIME-Version: 1.0 X-Received: by 10.37.114.3 with SMTP id n3mr15029631ybc.158.1462038054156; Sat, 30 Apr 2016 10:40:54 -0700 (PDT) Received: by 10.13.239.3 with HTTP; Sat, 30 Apr 2016 10:40:54 -0700 (PDT) In-Reply-To: References: Date: Sat, 30 Apr 2016 19:40:54 +0200 Message-ID: To: Derick Rethans Cc: Dmitry Stogov , PHP Developers Mailing List Content-Type: multipart/alternative; boundary=001a114891c6ddcbca0531b7427c Subject: Re: [PHP-DEV] zend_pass_function/zif_pass From: nikita.ppv@gmail.com (Nikita Popov) --001a114891c6ddcbca0531b7427c Content-Type: text/plain; charset=UTF-8 On Sat, Apr 30, 2016 at 7:12 PM, Derick Rethans 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 > > $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 --001a114891c6ddcbca0531b7427c--