Edit report at https://bugs.php.net/bug.php?id=68104&edit=1
ID: 68104
Updated by: laruence@php.net
Reported by: andre4tw at gmail dot com
Summary: Opcache crashes randomly and on Scripts with many
includes
-Status: Open
+Status: Closed
Type: Bug
Package: opcache
Operating System: Debian 7.0 Wheezy
PHP Version: 5.6.0
Block user comment: N
Private report: N
New Comment:
Automatic comment on behalf of laruence
Revision: http://git.php.net/?p=php-src.git;a=commit;h=d9d181e5ad41128a97a6e01d14fb766ff7bf31a8
Log: Fixed Bug #68104 (Segfault while pre-evaluating a disabled function)
Previous Comments:
------------------------------------------------------------------------
[2014-09-26 20:58:26] andre4tw at gmail dot com
Thank you very much! I´ve tested your patch and it works fine with all my scripts, no crashes
anymore. Good job!
------------------------------------------------------------------------
[2014-09-26 16:36:24] manuel-php at mausz dot at
Andre4tw can you retry with https://github.com/manuelm/php-src/commit/1b742a2e9f73c3ae57fbe7939932e22b619ce65e.patch
applied?
I no longer get any segfaults. Webserver is primarily running Horde + Roundcube with quite a large
user base.
------------------------------------------------------------------------
[2014-09-26 13:48:04] manuel-php at mausz dot at
Hi again
I'm not sure I can reproduce the same issue as ours, but mine is easy to reproduce:
php.ini:
disable_functions = dl
script:
var_dump(is_callable("dl"));
------------------------------------------------------------------------
[2014-09-26 13:04:12] manuel-php at mausz dot at
I managed to get a backtrace:
(gdb) bt
#0 zend_optimize (op_array=op_array@entry=0x149ee28, script=0x143c560, constants=0x7fffffff8c10) at
ext/opcache/Optimizer/pass1_5.c:374
#1 0x00007ffff033af41 in zend_accel_optimize (op_array=op_array@entry=0x149ee28,
script=script@entry=0x143c560, constants=constants@entry=0x7fffffff8c10) at
/root/php-src-PHP-5.6.1/ext/opcache/Optimizer/zend_optimizer.c:524
#2 0x00007ffff033b246 in zend_accel_script_optimize (script=0x143c560, script@entry=<error
reading variable: Cannot access memory at address 0x220>) at
/root/php-src-PHP-5.6.1/ext/opcache/Optimizer/zend_optimizer.c:587
#3 0x00007ffff0326463 in cache_script_in_shared_memory (from_shared_memory=0x7fffffff8df4,
key_length=38, key=0x7ffff0541af4 <accel_globals+372>
"/var/www/horde/pear/php/Horde/Util.php",
new_persistent_script=<error reading variable: Cannot access memory at address 0x220>) at
/root/php-src-PHP-5.6.1/ext/opcache/ZendAccelerator.c:1145
#4 compile_and_cache_file (file_handle=file_handle@entry=0x7fffffff8f30, type=type@entry=2,
key=key@entry=0x7ffff0541af4 <accel_globals+372>
"/var/www/horde/pear/php/Horde/Util.php", key_length=38,
op_array_p=op_array_p@entry=0x7fffffff8df8,
from_shared_memory=from_shared_memory@entry=0x7fffffff8df4) at
/root/php-src-PHP-5.6.1/ext/opcache/ZendAccelerator.c:1478
#5 0x00007ffff0327962 in persistent_compile_file (file_handle=0x7fffffff8f30, type=2) at
/root/php-src-PHP-5.6.1/ext/opcache/ZendAccelerator.c:1655
#6 0x0000000000752230 in compile_filename (type=type@entry=2, filename=filename@entry=0x14945a0) at
Zend/zend_language_scanner.l:629
#7 0x000000000082cedb in ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER (execute_data=0x7ffff7fa14e0) at
/root/php-src-PHP-5.6.1/Zend/zend_vm_execute.h:31308
#8 0x00000000007f2b08 in execute_ex (execute_data=0x7ffff7fa14e0) at
/root/php-src-PHP-5.6.1/Zend/zend_vm_execute.h:363
#9 0x000000000077a83f in zend_call_function (fci=fci@entry=0x7fffffff92f0, fci_cache=0x1467d40,
fci_cache@entry=0x7fffffff92c0) at /root/php-src-PHP-5.6.1/Zend/zend_execute_API.c:832
#10 0x00000000007a0fa5 in zend_call_method (object_pp=0x7ffff7fd62c0, obj_ce=<optimized out>,
fn_proxy=0x7ffff7fd62b8, function_name=0x13f43e0
"horde_autoloader_default::loadclass\001", function_name_len=<optimized out>,
retval_ptr_ptr=retval_ptr_ptr@entry=0x7fffffff93b8, param_count=param_count@entry=1,
arg1=0x146e480, arg2=arg2@entry=0x0) at /root/php-src-PHP-5.6.1/Zend/zend_interfaces.c:97
#11 0x00000000006463d7 in zif_spl_autoload_call (ht=<optimized out>,
return_value=<optimized out>, return_value_ptr=<optimized out>, this_ptr=<optimized
out>, return_value_used=<optimized out>)
at /root/php-src-PHP-5.6.1/ext/spl/php_spl.c:436
#12 0x000000000077a7a3 in zend_call_function (fci=fci@entry=0x7fffffff9620,
fci_cache=fci_cache@entry=0x7fffffff95f0) at /root/php-src-PHP-5.6.1/Zend/zend_execute_API.c:850
#13 0x000000000077b0da in zend_lookup_class_ex (name=name@entry=0x7fffb0589b98
"Horde_Util", name_length=10, key=0x7fffb0e2fcd8, use_autoload=use_autoload@entry=1,
ce=ce@entry=0x7fffffff96b8)
at /root/php-src-PHP-5.6.1/Zend/zend_execute_API.c:1008
#14 0x000000000077b7bd in zend_fetch_class_by_name (class_name=0x7fffb0589b98
"Horde_Util", class_name_len=<optimized out>, key=<optimized out>,
fetch_type=0) at /root/php-src-PHP-5.6.1/Zend/zend_execute_API.c:1488
#15 0x00000000007cead4 in ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER
(execute_data=0x7ffff7fa1200) at /root/php-src-PHP-5.6.1/Zend/zend_vm_execute.h:3826
#16 0x00000000007f2b08 in execute_ex (execute_data=0x7ffff7fa1200) at
/root/php-src-PHP-5.6.1/Zend/zend_vm_execute.h:363
#17 0x000000000078b219 in zend_execute_scripts (type=type@entry=8, retval=retval@entry=0x0,
file_count=file_count@entry=3) at /root/php-src-PHP-5.6.1/Zend/zend.c:1344
#18 0x000000000072862f in php_execute_script (primary_file=primary_file@entry=0x7fffffffbc60) at
/root/php-src-PHP-5.6.1/main/main.c:2584
#19 0x0000000000448ed8 in main (argc=<optimized out>, argv=<optimized out>) at
/root/php-src-PHP-5.6.1/sapi/fpm/fpm/fpm_main.c:1949
------------------------------------------------------------------------
[2014-09-26 07:16:02] andre4tw at gmail dot com
Description:
------------
## Description
When opcache is enabled scripts randomly crashing. The PHP-FPM log showing lots of exited with
signal 15 errors. When I disable opcache with ini_set('opcache.enable', 0) I have no
errors so far.
This error do not appear in PHP 5.5.17.
I noticed instant crashes, if you have scripts with large includes. (Google YouTube API class for
example). Loading the page forces an instant crash of the PHP-FPM Pool. FPM-Pools from smaller
scripts crashing time by time with signal 15.
## Informations
System: Nginx with PHP-FPM (UNIX-Socket communication)
Using included opcache module
Compiled with: ./configure --prefix=/usr/local --with-bz2 --enable-calendar --with-curl
--enable-exif --enable-ftp --with-gd --with-jpeg-dir --enable-gd-native-ttf --enable-mbstring
--with-mcrypt --with-openssl --with-pcre-regex --enable-soap --enable-sockets --enable-zip
--with-zlib --enable-fpm --with-config-file-path=/etc/php5
--with-mysql-sock=/var/run/mysqld/mysqld.sock --with-pdo-mysql --with-mysqli --enable-shmop
--enable-opcache
## php.ini opcache config
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/opcache.so
opcache.enable_cli = 1
opcache.fast_shutdown = 1
opcache.memory_consumption = 196
opcache.max_accelerated_files = 7000
opcache.interned_strings_buffer = 16
opcache.revalidate_freq = 60
opcache.enable_file_override = 1
opcache.opcache.save_comments = 0
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=68104&edit=1