|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2017-03-06 18:16 UTC] georgestephanis at automattic dot com
Description: ------------ When a certain file is loaded in PHP 7.1 with Opcache turned on -- in our case it was https://raw.githubusercontent.com/Automattic/jetpack/4.6/modules/related-posts/jetpack-related-posts.php -- the server segfaults and returns a 500 error. A user provided this strace, included in the `Actual Result` field. I've distilled it down to the following test script, which -- if loaded into a php file will also segfault, unless you `ini_set( 'opcache.enable', 0 );` to disable opcache. The code works just fine in PHP 7.0 -- so 7.1 seems to have been a break. Test script: --------------- <?php // https://gist.github.com/georgestephanis/7a0c81593581842d36e2383ae22c0a77 class Test_Class { public static function init() { static $instance = NULL; $instance = new Test_Class(); return $instance; } } class Test_Class_Raw extends Test_Class {} Actual result: -------------- 6851 14716 unlink("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a/home/**redacted**/public_html/wpphp71/wp-content/plugins/jetpack/modules/related-posts/jetpack-related-post s.php.bin") = 0 6852 14716 stat("/home/**redacted**/public_html/wpphp71/wp-content/plugins/jetpack/modules/related-posts/jetpack-related-posts.php", {st_mode=S_IFREG|0644, st_size=42917, ...}) = 0 6853 14716 mmap(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4eb0800000 6854 14716 munmap(0x7f4eb0800000, 2097152) = 0 6855 14716 fcntl(3, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=1}) = 0 6856 14716 fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=1}) = 0 6857 14716 mkdir("/home/**redacted**/.opcache", 0700) = -1 EEXIST (File exists) 6858 14716 mkdir("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a", 0700) = -1 EEXIST (File exists) 6859 14716 mkdir("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a/home", 0700) = -1 EEXIST (File exists) 6860 14716 mkdir("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a/home/**redacted**", 0700) = -1 EEXIST (File exists) 6861 14716 mkdir("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a/home/**redacted**/public_html", 0700) = -1 EEXIST (File exists) 6862 14716 mkdir("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a/home/**redacted**/public_html/wpphp71", 0700) = -1 EEXIST (File exists) 6863 14716 mkdir("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a/home/**redacted**/public_html/wpphp71/wp-content", 0700) = -1 EEXIST (File exists) 6864 14716 mkdir("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a/home/**redacted**/public_html/wpphp71/wp-content/plugins", 0700) = -1 EEXIST (File exists) 6865 14716 mkdir("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a/home/**redacted**/public_html/wpphp71/wp-content/plugins/jetpack", 0700) = -1 EEXIST (File exists) 6866 14716 mkdir("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a/home/**redacted**/public_html/wpphp71/wp-content/plugins/jetpack/modules", 0700) = -1 EEXIST (File exists) 6867 14716 mkdir("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a/home/**redacted**/public_html/wpphp71/wp-content/plugins/jetpack/modules/related-posts", 0700) = -1 EEXIST ( File exists) 6868 14716 open("/home/**redacted**/.opcache/89683bd16d8b1548698d49eab705558a/home/**redacted**/public_html/wpphp71/wp-content/plugins/jetpack/modules/related-posts/jetpack-related-posts. php.bin", O_RDWR|O_CREAT|O_EXCL, 0600) = 6 6869 14716 flock(6, LOCK_EX) = 0 6870 14716 --- SIGSEGV (Segmentation fault) @ 0 (0) --- PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 06:00:02 2025 UTC |
he means whatever file includes the code-snippet which is clear because otherwise ini_set() would not make any sense in context of diable opcache since it's too late - anways, no crash with 7.1.3RC1 [harry@rh:/www/beta.rhsoft.net/crash]$ cat test.php <?php require 'include.php'; [harry@rh:/www/beta.rhsoft.net/crash]$ cat include.php <?php class Test_Class { public static function init() { static $instance = NULL; $instance = new Test_Class(); return $instance; } } class Test_Class_Raw extends Test_Class {} [harry@rh:/www/beta.rhsoft.net/crash]$ php -v PHP 7.1.3RC1 (cli) (built: Feb 28 2017 12:34:57) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies [harry@rh:/www/beta.rhsoft.net/crash]$