make process init race free (issue #701)

This commit is contained in:
Daan Leijen 2023-03-20 13:55:39 -07:00
parent 30df80b05a
commit 0b4c3da2e9
2 changed files with 11 additions and 1 deletions

View file

@ -511,7 +511,8 @@ static void mi_detect_cpu_features(void) {
// Initialize the process; called by thread_init or the process loader
void mi_process_init(void) mi_attr_noexcept {
// ensure we are called once
if (_mi_process_is_initialized) return;
static mi_atomic_once_t process_init;
if (!mi_atomic_once(&process_init)) return;
_mi_verbose_message("process init: 0x%zx\n", _mi_thread_id());
_mi_process_is_initialized = true;
mi_process_setup_auto_thread_done();