From 38a48e5741faf51548f5b750c0ab6eba8eb67a0c Mon Sep 17 00:00:00 2001 From: Qi Wang Date: Thu, 16 Jan 2020 13:00:35 -0800 Subject: [PATCH] Set reentrancy to 1 for tsd_state_purgatory. Reentrancy is already set for other non-nominal tsd states (reincarnated and minimal_initialized). Add purgatory to be safe and consistent. --- include/jemalloc/internal/tsd.h | 5 ++++- src/tsd.c | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/jemalloc/internal/tsd.h b/include/jemalloc/internal/tsd.h index 576fa440..a62793aa 100644 --- a/include/jemalloc/internal/tsd.h +++ b/include/jemalloc/internal/tsd.h @@ -414,7 +414,10 @@ tsd_fetch(void) { static inline bool tsd_nominal(tsd_t *tsd) { - return (tsd_state_get(tsd) <= tsd_state_nominal_max); + bool nominal = tsd_state_get(tsd) <= tsd_state_nominal_max; + assert(nominal || tsd_reentrancy_level_get(tsd) > 0); + + return nominal; } JEMALLOC_ALWAYS_INLINE tsdn_t * diff --git a/src/tsd.c b/src/tsd.c index 17e9eed2..940ff7d2 100644 --- a/src/tsd.c +++ b/src/tsd.c @@ -376,6 +376,7 @@ tsd_do_data_cleanup(tsd_t *tsd) { arenas_tdata_cleanup(tsd); tcache_cleanup(tsd); witnesses_cleanup(tsd_witness_tsdp_get_unsafe(tsd)); + *tsd_reentrancy_levelp_get(tsd) = 1; } void