summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--10-opcache.ini2
-rw-r--r--php-bug78230.patch59
-rw-r--r--php73.spec8
3 files changed, 67 insertions, 2 deletions
diff --git a/10-opcache.ini b/10-opcache.ini
index 60e54b8..063a8e4 100644
--- a/10-opcache.ini
+++ b/10-opcache.ini
@@ -47,7 +47,7 @@ opcache.max_accelerated_files=4000
; A bitmask, where each bit enables or disables the appropriate OPcache
; passes
-;opcache.optimization_level=0x7FFFBFFF
+;opcache.optimization_level=0x7FFEBFFF
; This hack should only be enabled to work around "Cannot redeclare class"
; errors.
diff --git a/php-bug78230.patch b/php-bug78230.patch
new file mode 100644
index 0000000..355f8cc
--- /dev/null
+++ b/php-bug78230.patch
@@ -0,0 +1,59 @@
+From 4892bbc167dfa0ea188baebbce538225f4a0455a Mon Sep 17 00:00:00 2001
+From: Nikita Popov <nikita.ppv@gmail.com>
+Date: Wed, 3 Jul 2019 10:19:31 +0200
+Subject: [PATCH] Fixed bug #78230
+
+---
+ NEWS | 8 +++++---
+ ext/opcache/Optimizer/sccp.c | 1 +
+ ext/opcache/tests/bug78230.phpt | 29 +++++++++++++++++++++++++++++
+ 3 files changed, 35 insertions(+), 3 deletions(-)
+ create mode 100644 ext/opcache/tests/bug78230.phpt
+
+diff --git a/ext/opcache/Optimizer/sccp.c b/ext/opcache/Optimizer/sccp.c
+index ac3247076eaa..1ec3a5153241 100644
+--- a/ext/opcache/Optimizer/sccp.c
++++ b/ext/opcache/Optimizer/sccp.c
+@@ -2204,6 +2204,7 @@ static int try_remove_definition(sccp_ctx *ctx, int var_num, zend_ssa_var *var,
+ if (opline->opcode == ZEND_DO_ICALL) {
+ removed_ops = remove_call(ctx, opline, ssa_op);
+ } else if (opline->opcode == ZEND_TYPE_CHECK
++ && opline->op1_type & (IS_VAR|IS_TMP_VAR)
+ && !value_known(&ctx->values[ssa_op->op1_use])) {
+ /* For TYPE_CHECK we may compute the result value without knowing the
+ * operand, based on type inference information. Make sure the operand is
+diff --git a/ext/opcache/tests/bug78230.phpt b/ext/opcache/tests/bug78230.phpt
+new file mode 100644
+index 000000000000..38cc68499517
+--- /dev/null
++++ b/ext/opcache/tests/bug78230.phpt
+@@ -0,0 +1,29 @@
++--TEST--
++Bug #78230: Incorrect type check optimization
++--FILE--
++<?php
++
++function test($x) {
++ $y = (array) $x;
++ var_dump(is_array($y));
++}
++
++$ary = [1, 2];
++$ary[] = 3;
++test($ary);
++$ary[] = 4;
++var_dump($ary);
++
++?>
++--EXPECT--
++bool(true)
++array(4) {
++ [0]=>
++ int(1)
++ [1]=>
++ int(2)
++ [2]=>
++ int(3)
++ [3]=>
++ int(4)
++}
diff --git a/php73.spec b/php73.spec
index 9e1b7ab..272f198 100644
--- a/php73.spec
+++ b/php73.spec
@@ -123,7 +123,7 @@
Summary: PHP scripting language for creating dynamic web sites
Name: php
Version: %{upver}%{?rcver:~%{lower}}
-Release: 1%{?dist}
+Release: 2%{?dist}
# All files licensed under PHP version 3.01, except
# Zend is licensed under Zend
# TSRM is licensed under BSD
@@ -181,6 +181,7 @@ Patch48: php-7.3.3-pdooci.patch
Patch91: php-7.2.0-oci8conf.patch
# Upstream fixes (100+)
+Patch100: php-bug78230.patch
# Security fixes (200+)
@@ -1144,6 +1145,7 @@ low-level PHP extension for the libsodium cryptographic library.
%patch91 -p1 -b .remi-oci8
# upstream patches
+%patch100 -p1 -b .bug78230
# security patches
@@ -2228,6 +2230,10 @@ fi
%changelog
+* Wed Jul 3 2019 Remi Collet <remi@remirepo.net> - 7.3.7-2
+- add upstream patch for https://bugs.php.net/78230
+ segfault with opcache enabled
+
* Tue Jul 2 2019 Remi Collet <remi@remirepo.net> - 7.3.7-1
- Update to 7.3.7 - http://www.php.net/releases/7_3_7.php
- disable opcache.huge_code_pages in default configuration