diff options
| author | Remi Collet <remi@remirepo.net> | 2019-07-03 12:48:01 +0200 | 
|---|---|---|
| committer | Remi Collet <remi@remirepo.net> | 2019-07-03 12:48:01 +0200 | 
| commit | 502e2cdb7871815a183675a5eeff7d64155a5bec (patch) | |
| tree | 8c386f634d5f6d4ac3634fe896a17f755c88f76e | |
| parent | 2f2f1a82068a646bc894f08808512f42013918a9 (diff) | |
add upstream patch for https://bugs.php.net/78230 segfault with opcache enabled
| -rw-r--r-- | 10-opcache.ini | 2 | ||||
| -rw-r--r-- | php-bug78230.patch | 59 | ||||
| -rw-r--r-- | php73.spec | 8 | 
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) ++} @@ -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 | 
