Hi all,

Lior, which compiler are you using? You can still reproduce the problem? Can you run it through Valgrind?

I'm getting random crashes I can't figure out on 64-bit Linux after just making a very trivial change. :-/ The backtrace is the same up to compile_file() (although maybe that doesn't mean much? hmm).

Dmitry, to reproduce, just add another GLOBAL REGISTER variable to zend_vm_execute, and then set it in execute_ex(). An empty file will crash it. It does NOT crash with --enable-debug, nor with certain combinations of optimization level and global register.

%r12 with -O2 seems to consistently fail, but with -O3 it might be %r13, etc.

Now, the question: Is that little change triggering a bug in GCC 4.8? Or is it somehow revealing a PHP problem?!


Thanks,
Matt


----- Original Message -----
From: "Lior Kaplan"
Sent: Monday, November 23, 2015

Hi,

Thanks Ferenc for checking.

trying to debug this, I've added "echo var_dump($argv);" in the begining of
the script, but now it segfault.

before:
sh-3.2# /php-7.0.0RC7/sapi/cli/php -n /php-7.0.0RC7/pear/fetch.php "
http://5.77.39.20/install-pear-nozlib.phar"; pear/install-pear-nozlib.phar

Fatal error: Redefinition of parameter $argv in
/php-7.0.0RC7/pear/fetch.php on line 3
sh-3.2# /php-7.0.0RC7/sapi/cli/php -n -m
[PHP Modules]
Core
date
dom
filter
hash
iconv
json
libxml
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
readline
Reflection
session
SimpleXML
SPL
sqlite3
standard
xml
xmlreader
xmlwriter
zlib

[Zend Modules]

after:

(gdb) r -n /php-7.0.0RC7/pear/fetch.php "
http://5.77.39.20/install-pear-nozlib.phar"; pear/install-pear-nozlib.phar
Starting program: /php-7.0.0RC7/sapi/cli/php -n
/php-7.0.0RC7/pear/fetch.php "http://5.77.39.20/install-pear-nozlib.phar";
pear/install-pear-nozlib.phar
Reading symbols for shared libraries
++++++................................................ done
Reading symbols for shared libraries ........................ done

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000000000010
zend_try_compile_cv (result=0x7fff5fbfe440, ast=0x103e6f100) at
zend_compile.c:2178
2178 if (zend_string_equals_literal(name, "this")) {
(gdb) bt
#0  zend_try_compile_cv (result=0x7fff5fbfe440, ast=0x103e6f100) at
zend_compile.c:2178
#1  0x00000001002b7ff1 in zend_compile_simple_var [inlined] () at
/php-7.0.0RC7/Zend/zend_compile.c:2226
#2  0x00000001002b7ff1 in zend_compile_var (result=0x7fff5fbfe440,
ast=0x103e6f100, type=0) at zend_compile.c:7219
#3  0x00000001002bb46d in zend_compile_args (ast=0xfffffffffffff2f5,
fbc=0x103e6f100) at zend_compile.c:2722
#4  0x00000001002b7e62 in zend_compile_call_common (result=0x7fff5fbfe648,
args_ast=0xfffffffffffff2f5, fbc=0x10232e050) at zend_compile.c:2810
#5  0x00000001002ba8e5 in zend_compile_call (result=0x7fff5fbfe648,
ast=0x103e6f100, type=65523712) at zend_compile.c:3245
#6  0x00000001002b7366 in zend_compile_expr (result=0x7fff5fbfe648,
ast=0x103e6f100) at zend_compile.c:7111
#7  0x00000001002b428f in zend_compile_echo [inlined] () at
/php-7.0.0RC7/Zend/zend_compile.c:3616
#8  0x00000001002b428f in zend_compile_stmt (ast=0x103e750d0) at
zend_compile.c:7007
#9  0x00000001002b7990 in zend_compile_top_stmt (ast=0x103e750d0) at
zend_compile.c:6966
#10 0x00000001002b797d in zend_compile_top_stmt (ast=0x103e750e0) at
zend_compile.c:6961
#11 0x00000001002b797d in zend_compile_top_stmt (ast=0x103e770a8) at
zend_compile.c:6961
#12 0x000000010029e6f2 in compile_file (file_handle=0x7fff5fbfe728,
type=65523712) at zend_language_scanner.l:607
#13 0x00000001002cc4dc in zend_execute_scripts (type=8,
retval=0x7fff5fbfe990, file_count=1606412688) at zend.c:1422
#14 0x000000010026a1a9 in php_execute_script (primary_file=0x7fff5fbff6d8)
at main.c:2471
#15 0x000000010035dad4 in do_cli [inlined] () at
/php-7.0.0RC7/sapi/cli/php_cli.c:974
#16 0x000000010035dad4 in main (argc=1606416352, argv=0x7fff5fbff7e0) at
php_cli.c:1345

(again, works fine on Linux)




Kaplan



On Sun, Nov 22, 2015 at 10:51 PM, Andrea Faulds <a...@ajf.me> wrote:

Hi Lior,

Lior Kaplan wrote:

Fatal error: Redefinition of parameter $argv in
/php-7.0.0RC7/pear/fetch.php on line 3
make: *** [install-pear] Error 255


This is a strange and rather concerning error message. If I look at the
source code of /pear/fetch.php in php-src, line three looks like this:

    function usage($argv) {

$argv here is only specified once in the parameter list, yet it produces
an error. Now, presumably this is some sort of conflict with the global
variable $argv. But that's a global, not a superglobal, so it really
shouldn't cause an error here.

This looks like it might be a serious PHP 7 bug.

And yet I can't reproduce it by running pear/fetch.php. Is something weird
going on here?

Thanks.

--
Andrea Faulds
http://ajf.me/


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

Reply via email to