[xdebug-general] Re: Segmentation-fault in xdebug.so from pkgtools (PHP7?)

From: Derick Rethans <derick[@]xdebug.org>
Date: Wed, 27 Jan 2016 17:55:49 +0000 (GMT)

On Wed, 27 Jan 2016, Nish Aravamudan wrote:

> > > I'm happy to provide more output from gdb, but not really sure
> > > where to start :)
> >
> > Can you instead provide the script to run, and exact steps on how to
> > reproduce this? That includes command line arguments, exact PHP and
> > Xdebug versions, etc.
>
> xdebug 2.4.0-rc4 php 7.0.2
>
> The script is bin/pkgtools from
> http://anonscm.debian.org/cgit/pkg-php/pkg-php-tools.git/log/?h=master-7.0
>
> The core dump occurs regardless of any parameters to pkgtools (i.e.,
> just running `pkgtools` should be sufficient).
>
> I reproduce this by spinning up a VM (technically a chroot, but
> equivalent for this purpose) with Ubuntu Xenial, and adding a PPA to it
> (https://launchpad.net/~php-ubuntu/+archive/ubuntu/php7.0). Update and
> `apt-get install pkg-php-tools php-xdebug` and run `pkgtools`.

I can reproduce this, but my "quick" fix breaks a test case for PHP 7,
and I haven't figured out yet how to solve that bit. In any case, the
crash fix is:

diff --git a/xdebug_stack.c b/xdebug_stack.c
index 2df4c99..ce57521 100644
--- a/xdebug_stack.c
+++ b/xdebug_stack.c
@@ -1147,7 +1147,7 @@ static void xdebug_build_fname(xdebug_func *tmp, zend_execute_data *edata TSRMLS
                ) {
                        tmp->type = XFUNC_NORMAL;
                        tmp->function = xdstrdup("{internal eval}");
- } else if (edata && edata->prev_execute_data && edata->prev_execute_data->opline && edata->prev_execute_data->opline->opcode == ZEND_INCLUDE_OR_EVAL) {
+ } else if (edata && edata->prev_execute_data && edata->prev_execute_data->func->type == ZEND_USER_FUNCTION && edata->prev_execute_data->opline && edata->prev_execute_data->opline->opcode == ZEND_INCLUDE_OR_EVAL) {
                        switch (edata->prev_execute_data->opline->extended_value) {
                                case ZEND_EVAL:
                                        tmp->type = XFUNC_EVAL;

Could you be so kind to file a bug at http://bugs.xdebug.org please? You
can mention this temporary patch as well (and please test it).

cheers,
Derick
Received on Wed Jan 27 2016 - 17:55:49 GMT

This archive was generated by hypermail 2.2.0 : Mon Jun 25 2018 - 06:00:04 BST