From 4f8e788a6130533d413bfec577889194e1011fa2 Mon Sep 17 00:00:00 2001 From: gilbertlee-amd <44450918+gilbertlee-amd@users.noreply.github.com> Date: Wed, 28 Apr 2021 12:04:41 -0600 Subject: [PATCH] Fixing potential race-condition in env var parameter macro (#359) --- src/include/param.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/include/param.h b/src/include/param.h index 3ebea195e2..c295c2c89d 100644 --- a/src/include/param.h +++ b/src/include/param.h @@ -83,9 +83,11 @@ pthread_mutex_t rcclParamMutex##name = PTHREAD_MUTEX_INITIALIZER; \ int64_t rcclParam##name() { \ static_assert(default_value != -1LL, "default value cannot be -1"); \ static int64_t value = -1LL; \ + int64_t localValue; \ pthread_mutex_lock(&rcclParamMutex##name); \ + localValue = value; \ char* en = getenv("RCCL_TEST_ENV_VARS"); \ - if (value == -1LL || (en && (strcmp(en, "ENABLE") == 0))) { \ + if (value == -1LL || (en && (strcmp(en, "ENABLE") == 0))){ \ value = default_value; \ char* str = getenv("RCCL_" env); \ if (str && strlen(str) > 0) { \ @@ -98,9 +100,10 @@ int64_t rcclParam##name() { \ INFO(NCCL_ALL,"%s set by environment to %lu.", "RCCL_" env, value); \ } \ } \ + localValue = value; \ } \ pthread_mutex_unlock(&rcclParamMutex##name); \ - return value; \ + return localValue; \ } #endif