Keep TSD bootstrap reentrant until data init completes

This commit is contained in:
Farid Zakaria
2026-07-02 13:00:35 -07:00
committed by Slobodan Predolac
parent 95c2588191
commit 36f2017777

View File

@@ -182,7 +182,9 @@ tsd_fetch_slow(tsd_t *tsd, bool minimal) {
tsd_slow_update(tsd); tsd_slow_update(tsd);
/* Trigger cleanup handler registration. */ /* Trigger cleanup handler registration. */
tsd_set(tsd); tsd_set(tsd);
tsd_pre_reentrancy_raw(tsd);
tsd_data_init(tsd); tsd_data_init(tsd);
tsd_post_reentrancy_raw(tsd);
} }
} else { } else {
tsd_state_set(tsd, tsd_state_minimal_initialized); tsd_state_set(tsd, tsd_state_minimal_initialized);
@@ -210,9 +212,9 @@ tsd_fetch_slow(tsd_t *tsd, bool minimal) {
/* Switch to fully initialized. */ /* Switch to fully initialized. */
tsd_state_set(tsd, tsd_state_nominal); tsd_state_set(tsd, tsd_state_nominal);
assert(*tsd_reentrancy_levelp_get(tsd) >= 1); assert(*tsd_reentrancy_levelp_get(tsd) >= 1);
(*tsd_reentrancy_levelp_get(tsd))--;
tsd_slow_update(tsd); tsd_slow_update(tsd);
tsd_data_init(tsd); tsd_data_init(tsd);
tsd_post_reentrancy_raw(tsd);
} else { } else {
assert_tsd_data_cleanup_done(tsd); assert_tsd_data_cleanup_done(tsd);
} }