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