Bug #74213 [Com]: Esoteric file causes segfault with 7.1 && opcache

From: Date: Mon, 20 Mar 2017 16:50:13 +0000
Subject: Bug #74213 [Com]: Esoteric file causes segfault with 7.1 && opcache
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-207963@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=74213&edit=1 ID: 74213 Comment by: georgestephanis at automattic dot com Reported by: georgestephanis at automattic dot com Summary: Esoteric file causes segfault with 7.1 && opcache Status: Open Type: Bug Package: opcache PHP Version: 7.1.2 Block user comment: N Private report: N New Comment: Howdy! I meant -- yes -- that the ini_set() would be in the file including test_class.php not in test_class.php directly. We've had reports of this in several environments thus far, and I've been able to duplicate it in testing in Siteground's 7.1 configuration. I'm not hugely intimately familiar with Siteground's setup -- perhaps it's contingent on the web server or fastcgi mode? Previous Comments: ------------------------------------------------------------------------ [2017-03-07 11:08:54] spam2 at rhsoft dot net 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]$ ------------------------------------------------------------------------ [2017-03-07 10:56:26] andrew dot nester dot dev at gmail dot com I was trying to reproduce it but no success. Could you please describe exact steps you did to reproduces this issue? Thanks! ------------------------------------------------------------------------ [2017-03-06 18:16:39] 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) --- ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=74213&edit=1

« previous php.bugs (#207963) next »