diff options
author | Anatol Belski <ab@php.net> | 2015-02-17 19:15:22 +0100 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2015-02-17 19:15:22 +0100 |
commit | d428bf2d4edab232690b64977aaf0a3b15585843 (patch) | |
tree | e5526767b0e19835dde1054b4c2c7bbfa246a3c1 /TSRM | |
parent | 31287f0317981ccd4ce38a6e0e128c6504fb1101 (diff) | |
download | php-git-d428bf2d4edab232690b64977aaf0a3b15585843.tar.gz |
improve debugability in TS debug builds
gdb seems to be not always able to fetch the correct context for
thread locals. Thus, the "if (TSRMLS_CACHE)" clause causes gdb to
show crashes which aren't recognized neither with helgrind nor
in release builds. This is reproducable by setting breakpoints on
the exact line where PHP has a tsrm_get_ls_cache() call.
Diffstat (limited to 'TSRM')
-rw-r--r-- | TSRM/TSRM.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/TSRM/TSRM.h b/TSRM/TSRM.h index cdb6e87a22..859b3fac01 100644 --- a/TSRM/TSRM.h +++ b/TSRM/TSRM.h @@ -170,7 +170,11 @@ TSRM_API void *tsrm_get_ls_cache(void); #define TSRMG_STATIC(id, type, element) (((type) (*((void ***) TSRMLS_CACHE))[TSRM_UNSHUFFLE_RSRC_ID(id)])->element) #define TSRMLS_CACHE_EXTERN() extern TSRM_TLS void *TSRMLS_CACHE #define TSRMLS_CACHE_DEFINE() TSRM_TLS void *TSRMLS_CACHE = NULL +#if ZEND_DEBUG +#define TSRMLS_CACHE_UPDATE() TSRMLS_CACHE = tsrm_get_ls_cache() +#else #define TSRMLS_CACHE_UPDATE() if (!TSRMLS_CACHE) TSRMLS_CACHE = tsrm_get_ls_cache() +#endif #define TSRMLS_CACHE _tsrm_ls_cache /* BC only */ |