]> granicus.if.org Git - php/commitdiff
Fixed race condition in opcache restart
authorDmitry Stogov <dmitry@zend.com>
Wed, 22 May 2019 21:20:35 +0000 (00:20 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 22 May 2019 21:20:35 +0000 (00:20 +0300)
ext/opcache/ZendAccelerator.c

index 34e4ef0071c46c6141bd44f8414c2515f1535011..302a3c2c726cfa8b986dbad0daa8ef87cf25a18e 100644 (file)
@@ -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;
        }