summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2019-05-23 00:20:35 +0300
committerDmitry Stogov <dmitry@zend.com>2019-05-23 00:20:35 +0300
commitfa6a4483e63d87608a839d04c6e1b9eed9a0430f (patch)
tree427b25840471a43e88a424aa53e81483f5ddc1a4
parent96404eb8e223bde0f5f697987a81acb640cc539f (diff)
downloadphp-git-fa6a4483e63d87608a839d04c6e1b9eed9a0430f.tar.gz
Fixed race condition in opcache restart
-rw-r--r--ext/opcache/ZendAccelerator.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c
index 34e4ef0071..302a3c2c72 100644
--- a/ext/opcache/ZendAccelerator.c
+++ b/ext/opcache/ZendAccelerator.c
@@ -2164,8 +2164,6 @@ static void accel_reset_pcre_cache(void)
static void accel_activate(void)
{
- zend_bool reset_pcre = 0;
-
if (!ZCG(enabled) || !accel_startup_ok) {
return;
}
@@ -2271,9 +2269,6 @@ static void accel_activate(void)
accel_restart_leave();
}
}
- if (!ZCG(pcre_reseted)) {
- reset_pcre = 1;
- }
zend_shared_alloc_unlock();
}
@@ -2282,7 +2277,7 @@ static void accel_activate(void)
SHM_PROTECT();
HANDLE_UNBLOCK_INTERRUPTIONS();
- if (ZCSG(last_restart_time) != ZCG(last_restart_time)) {
+ if (ZCG(accelerator_enabled) && ZCSG(last_restart_time) != ZCG(last_restart_time)) {
/* SHM was reinitialized. */
ZCG(last_restart_time) = ZCSG(last_restart_time);
@@ -2291,7 +2286,7 @@ static void accel_activate(void)
accel_reset_pcre_cache();
ZCG(pcre_reseted) = 0;
- } else if (reset_pcre) {
+ } else if (!ZCG(accelerator_enabled) && !ZCG(pcre_reseted)) {
accel_reset_pcre_cache();
ZCG(pcre_reseted) = 1;
}