Bug #74213 [Com]: Esoteric file causes segfault with 7.1 && opcache
| From: | andrew dot nester dot dev at gmail dot com | Date: | Tue, 07 Mar 2017 10:56:30 +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-207715@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: andrew dot nester dot dev at gmail 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:
I was trying to reproduce it but no success. Could you please describe exact steps you did to
reproduces this issue? Thanks!
Previous Comments:
------------------------------------------------------------------------
[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