Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

core/logging: Fix data race on log_prefix #10568

Merged
merged 1 commit into from
Jan 29, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion include/ofi.h
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ struct ofi_filter {

extern struct ofi_filter prov_log_filter;
extern struct fi_provider core_prov;
extern const char *log_prefix;
extern OFI_THREAD_LOCAL const char *log_prefix;

void ofi_create_filter(struct ofi_filter *filter, const char *env_name);
void ofi_free_filter(struct ofi_filter *filter);
Expand Down
16 changes: 16 additions & 0 deletions include/unix/osd.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,22 @@

#define OFI_MAX_SOCKET_BUF_SIZE SIZE_MAX

#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L)
// C23 and above: use thread_local directly
#define OFI_THREAD_LOCAL thread_local
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201102L) && defined(_Thread_local)
// C11: use _Thread_local
#define OFI_THREAD_LOCAL _Thread_local
#elif defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__SUNPRO_CC) || defined(__IBMCPP__) || defined(__clang__)
// GCC/Clang/Intel/SunPro/IBM compilers
#define OFI_THREAD_LOCAL __thread
#else
// Unsupported compiler
#warning "Thread-local storage is not supported on this platform"
#define OFI_THREAD_LOCAL
#endif


struct util_shm
{
int shared_fd;
Expand Down
17 changes: 17 additions & 0 deletions include/windows/osd.h
Original file line number Diff line number Diff line change
Expand Up @@ -1141,6 +1141,23 @@ ofi_cpuid(unsigned func, unsigned subfunc, unsigned cpuinfo[4])

#endif /* defined(_M_X64) || defined(_M_AMD64) */

#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L)
// C23 and above: use thread_local directly
#define OFI_THREAD_LOCAL thread_local
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201102L) && defined(_Thread_local)
// C11: use _Thread_local
#define OFI_THREAD_LOCAL _Thread_local
#elif defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__SUNPRO_CC) || defined(__IBMCPP__) || defined(__clang__)
// GCC/Clang/Intel/SunPro/IBM compilers
#define OFI_THREAD_LOCAL __thread
#elif defined(_MSC_VER)
// Microsoft Visual C++ compiler
#define OFI_THREAD_LOCAL __declspec(thread)
#else
// Unsupported compiler
#warning "Thread-local storage is not supported on this platform"
#define OFI_THREAD_LOCAL
#endif

#ifdef __cplusplus
}
Expand Down
2 changes: 1 addition & 1 deletion src/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -2429,4 +2429,4 @@ size_t ofi_vrb_speed(uint8_t speed, uint8_t width)
}

/* log_prefix is used by fi_log and by prov/util */
const char *log_prefix = "";
OFI_THREAD_LOCAL const char *log_prefix = "";
Loading