From 18f7e262570b8766cf6d7f7e0990affe687fa098 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 2 Mar 2017 20:27:27 +0100 Subject: [PATCH] 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. --- Zend/zend_signal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Zend/zend_signal.c b/Zend/zend_signal.c index ba550a146af..b12f30d31bd 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