Hi Matt, On Tue, Dec 22, 2015 at 8:36 PM, Matt Wilmas <php_li...@realplain.com> wrote:
> 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. > Using another global register is not a trivial change. > %r12 with -O2 seems to consistently fail, but with -O3 it might be %r13, > etc. > In general both should work fine, but it seems like this feature is not well debugged in GCC and may lead to miscompilation. > Now, the question: Is that little change triggering a bug in GCC 4.8? Or > is it somehow revealing a PHP problem?! > It may be a GCC bug, as well as a bug in your code... may be you need to save/restore it manually in execute_ex()? Thanks. Dmitry. > > > 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/ >>> >> >