From 502e2cdb7871815a183675a5eeff7d64155a5bec Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 3 Jul 2019 12:48:01 +0200 Subject: add upstream patch for https://bugs.php.net/78230 segfault with opcache enabled --- 10-opcache.ini | 2 +- php-bug78230.patch | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ php73.spec | 8 +++++++- 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 php-bug78230.patch 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 +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-- ++ ++--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 - 7.3.7-2 +- add upstream patch for https://bugs.php.net/78230 + segfault with opcache enabled + * Tue Jul 2 2019 Remi Collet - 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 -- cgit