Skip to content

Commit

Permalink
core/logging: Fix data race on log_prefix
Browse files Browse the repository at this point in the history
In ofi_get_core_info, which is supposed to be thread safe ("Multiple
threads may call fi_getinfo simultaneously, without any requirement for
serialization."), a global variable 'log_prefix' is modified, which may
lead to a data race. Changing the variable to a thread local one, fixes
that problem.

Signed-off-by: Dariusz Sciebura <[email protected]>
  • Loading branch information
dsciebu committed Nov 28, 2024
1 parent afbff48 commit 6935b70
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
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 _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
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 = "";
_Thread_local const char *log_prefix = "";

0 comments on commit 6935b70

Please sign in to comment.