Bug #74213 [NEW]: Esoteric file causes segfault with 7.1 && opcache
| From: | georgestephanis at automattic dot com | Date: | Mon, 06 Mar 2017 18:16:47 +0000 |
| Subject: | Bug #74213 [NEW]: Esoteric file causes segfault with 7.1 && opcache | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-207710@lists.php.net to get a copy of this message | ||
From: georgestephanis at automattic dot com
Operating system:
PHP version: 7.1.2
Package: opcache
Bug Type: Bug
Bug description:Esoteric file causes segfault with 7.1 && opcache
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 bug report at https://bugs.php.net/bug.php?id=74213&edit=1
--
Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=74213&r=trysnapshot54
Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=74213&r=trysnapshot55
Try a snapshot (trunk): https://bugs.php.net/fix.php?id=74213&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=74213&r=fixed
Fixed in release: https://bugs.php.net/fix.php?id=74213&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=74213&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=74213&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=74213&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=74213&r=support
Expected behavior: https://bugs.php.net/fix.php?id=74213&r=notwrong
Not enough info: https://bugs.php.net/fix.php?id=74213&r=notenoughinfo
Submitted twice: https://bugs.php.net/fix.php?id=74213&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=74213&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=74213&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=74213&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=74213&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=74213&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=74213&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=74213&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=74213&r=mysqlcfg