summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2017-03-02 20:27:27 +0100
committerAnatol Belski <ab@php.net>2017-03-02 20:27:27 +0100
commit18f7e262570b8766cf6d7f7e0990affe687fa098 (patch)
tree096c1d966be64b5d0b59821359246642de7c722b
parentc7b2c698d03466959874d933b1a44be125e25e4f (diff)
downloadphp-git-18f7e262570b8766cf6d7f7e0990affe687fa098.tar.gz
improve signal globals consistency check for TS
Seems when we receive TERM, TLS is destroyed completely. In that case, not only signal globals, but the entire globals array doesn't exist anymore.
-rw-r--r--Zend/zend_signal.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/Zend/zend_signal.c b/Zend/zend_signal.c
index ba550a146a..b12f30d31b 100644
--- a/Zend/zend_signal.c
+++ b/Zend/zend_signal.c
@@ -79,7 +79,7 @@ void zend_signal_handler_defer(int signo, siginfo_t *siginfo, void *context)
#ifdef ZTS
ZEND_TSRMLS_CACHE_UPDATE();
/* A signal could hit after TSRM shutdown, in this case globals are already freed. */
- if (NULL == TSRMG_BULK_STATIC(zend_signal_globals_id, zend_signal_globals_t *)) {
+ if (NULL == TSRMLS_CACHE || NULL == TSRMG_BULK_STATIC(zend_signal_globals_id, zend_signal_globals_t *)) {
is_handling_safe = 0;
}
#endif
@@ -169,7 +169,7 @@ static void zend_signal_handler(int signo, siginfo_t *siginfo, void *context)
sigset_t sigset;
zend_signal_entry_t p_sig;
#ifdef ZTS
- if (NULL == TSRMG_BULK_STATIC(zend_signal_globals_id, zend_signal_globals_t *)) {
+ if (NULL == TSRMLS_CACHE || NULL == TSRMG_BULK_STATIC(zend_signal_globals_id, zend_signal_globals_t *)) {
p_sig.flags = 0;
p_sig.handler = SIG_DFL;
} else