|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2018-12-17 15:48 UTC] sjon at hortensius dot net
Description: ------------ since my fpm childs started segfaulting I've installed a debug-build which yielded the given message. Since this is a production machine and this happens infrequently I would like to know how much (and what) context is required to fix this. The full message: ext/opcache/ZendAccelerator.c:737: accel_replace_string_by_process_permanent: Assertion `0' failed. this happens on only a subset of pools in the fpm configuration. It segfaults roughly once every ~ 100 hits and asserts roughly every hit PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 23:00:01 2025 UTC |
The bug can be reproduced by accessing any php file even just <?php echo 10; ?> Certainly, OpCache must be enabled in php.ini zend_extension=opcache.so opcache.enable=1 It happens during child exit, so simple way to reproduce is to set short timeout for on-demand manager in a pool .conf file pm = ondemand pm.process_idle_timeout = 2s catch_workers_output = yes php_value[error_reporting] = 22519 Unsure which bits of error_reporting should be set. The pool name in log messages after "child 9958 said into stderr" may be truncated.From a quick look I agree that we should use zend_alter_ini_entry_ex instead. However I would use it in fpm_php_apply_defines_ex and call it instead of fpm_php_zend_ini_alter_master which could be then dropped. That would also keep extension and disable_{functions,classes} working.I get this error message when I run the Zend bench-script Zend/bench.php under PHP 7.3.5 (gdb) run -f /usr/src/php-7.3.5/Zend/bench.php Starting program: /usr/local/bin/php -f /usr/src/php-7.3.5/Zend/bench.php [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". simple 0.055 simplecall 0.026 simpleucall 0.028 simpleudcall 0.028 mandel 0.301 mandel2 0.403 ackermann(7) 0.179 ary(50000) 0.026 ary2(50000) 0.016 ary3(2000) 0.303 fibo(30) 0.492 hash1(50000) 0.089 hash2(500) 0.068 heapsort(20000) 0.142 matrix(20) 0.165 nestedloop(12) 0.159 sieve(30) 0.098 strcat(200000) 0.032 ------------------------ Total 2.610 php: /usr/src/php-7.3.5/ext/opcache/ZendAccelerator.c:747: accel_replace_string_by_process_permanent: Assertion `0' failed. Program received signal SIGABRT, Aborted. (gdb) backtrace #0 0x00007ffff3b20f67 in raise () from /lib64/libc.so.6 #1 0x00007ffff3b2233a in abort () from /lib64/libc.so.6 #2 0x00007ffff3b19d66 in __assert_fail_base () from /lib64/libc.so.6 #3 0x00007ffff3b19e12 in __assert_fail () from /lib64/libc.so.6 #4 0x00007ffff1143c71 in accel_replace_string_by_process_permanent (str=0x7fffe2d022e0) at /usr/src/php-7.3.5/ext/opcache/ZendAccelerator.c:747 #5 0x00007ffff114349f in accel_copy_permanent_strings (new_interned_string=0x7ffff1143c1d <accel_replace_string_by_process_permanent>) at /usr/src/php-7.3.5/ext/opcache/ZendAccelerator.c:649 #6 0x00007ffff1143d3b in accel_use_permanent_interned_strings () at /usr/src/php-7.3.5/ext/opcache/ZendAccelerator.c:775 #7 0x0000000000b39a29 in zend_interned_strings_switch_storage (request=0 '\000') at /usr/src/php-7.3.5/Zend/zend_string.c:322 #8 0x0000000000a6f4ba in php_module_shutdown () at /usr/src/php-7.3.5/main/main.c:2473 #9 0x0000000000bd4177 in main (argc=3, argv=0x180e1c0) at /usr/src/php-7.3.5/sapi/cli/php_cli.c:1404 So does this bug still exists in version 7.3.5 or is it a different one?