From 5722616452439b9dafb87921ddc636ed156e3761 Mon Sep 17 00:00:00 2001 From: "Parshutin, Eugeny" Date: Thu, 7 Aug 2025 05:23:15 -0500 Subject: [PATCH 1/4] coverity: wrap the access to global.state with mutex --- src/ittnotify/ittnotify_static.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ittnotify/ittnotify_static.c b/src/ittnotify/ittnotify_static.c index f78adaf..9fbcfb1 100644 --- a/src/ittnotify/ittnotify_static.c +++ b/src/ittnotify/ittnotify_static.c @@ -1663,11 +1663,15 @@ ITT_EXTERN_C void _N_(mark_pt_region_end)(__itt_pt_region region) ITT_EXTERN_C __itt_collection_state (_N_(get_collection_state))(void) { + __itt_collection_state state; + ITT_MUTEX_INIT_AND_LOCK(_N_(_ittapi_global)); if (!_N_(_ittapi_global).api_initialized && _N_(_ittapi_global).thread_list == NULL) { __itt_init_ittlib_name(NULL, __itt_group_all); } - return _N_(_ittapi_global).state; + state = _N_(_ittapi_global).state; + if (PTHREAD_SYMBOLS) __itt_mutex_unlock(&_N_(_ittapi_global).mutex); + return state; } /* !!! should be called from the library destructor !!! From 90405270771cffdd6c5919005d57338f8094205c Mon Sep 17 00:00:00 2001 From: "Parshutin, Eugeny" Date: Thu, 7 Aug 2025 05:47:33 -0500 Subject: [PATCH 2/4] coverity: add return to prevent double work and double mutex unlocking --- src/ittnotify/ittnotify_static.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ittnotify/ittnotify_static.c b/src/ittnotify/ittnotify_static.c index 9fbcfb1..c924387 100644 --- a/src/ittnotify/ittnotify_static.c +++ b/src/ittnotify/ittnotify_static.c @@ -952,6 +952,7 @@ static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(bind_context_metadata_to_counter) { if (PTHREAD_SYMBOLS) __itt_mutex_unlock(&_N_(_ittapi_global).mutex); ITTNOTIFY_NAME(bind_context_metadata_to_counter)(counter, length, metadata); + return; } else { From 40e4f186b2db3905ebad86507860479d448611e0 Mon Sep 17 00:00:00 2001 From: "Parshutin, Eugeny" Date: Thu, 7 Aug 2025 08:57:48 -0500 Subject: [PATCH 3/4] update api version --- src/ittnotify/ittnotify_config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ittnotify/ittnotify_config.h b/src/ittnotify/ittnotify_config.h index 7b0d855..274d466 100644 --- a/src/ittnotify/ittnotify_config.h +++ b/src/ittnotify/ittnotify_config.h @@ -208,10 +208,10 @@ #define ITT_MAGIC { 0xED, 0xAB, 0xAB, 0xEC, 0x0D, 0xEE, 0xDA, 0x30 } /* Replace with snapshot date YYYYMMDD for promotion build. */ -#define API_VERSION_BUILD 20250429 +#define API_VERSION_BUILD 20250807 #ifndef API_VERSION_NUM -#define API_VERSION_NUM 3.26.0 +#define API_VERSION_NUM 3.26.3 #endif /* API_VERSION_NUM */ #define API_VERSION "ITT-API-Version " ITT_TO_STR(API_VERSION_NUM) \ From 4a35dc6a3c23a6eb29cd25776bb496a498b775e9 Mon Sep 17 00:00:00 2001 From: "Parshutin, Eugeny" Date: Fri, 8 Aug 2025 05:27:08 -0500 Subject: [PATCH 4/4] address code review comments: move the variable declaration --- src/ittnotify/ittnotify_static.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/ittnotify/ittnotify_static.c b/src/ittnotify/ittnotify_static.c index c924387..85f66ec 100644 --- a/src/ittnotify/ittnotify_static.c +++ b/src/ittnotify/ittnotify_static.c @@ -1345,14 +1345,12 @@ static void __itt_nullify_all_pointers(void) static int __itt_is_collector_available(void) { - int is_available; - ITT_MUTEX_INIT_AND_LOCK(_N_(_ittapi_global)); if (_N_(_ittapi_global).state == __itt_collection_uninitialized) { _N_(_ittapi_global).state = (NULL == __itt_get_lib_name()) ? __itt_collection_collector_absent : __itt_collection_collector_exists; } - is_available = (_N_(_ittapi_global).state == __itt_collection_collector_exists || + int is_available = (_N_(_ittapi_global).state == __itt_collection_collector_exists || _N_(_ittapi_global).state == __itt_collection_init_successful); __itt_mutex_unlock(&_N_(_ittapi_global).mutex); return is_available; @@ -1664,13 +1662,12 @@ ITT_EXTERN_C void _N_(mark_pt_region_end)(__itt_pt_region region) ITT_EXTERN_C __itt_collection_state (_N_(get_collection_state))(void) { - __itt_collection_state state; ITT_MUTEX_INIT_AND_LOCK(_N_(_ittapi_global)); if (!_N_(_ittapi_global).api_initialized && _N_(_ittapi_global).thread_list == NULL) { __itt_init_ittlib_name(NULL, __itt_group_all); } - state = _N_(_ittapi_global).state; + __itt_collection_state state = _N_(_ittapi_global).state; if (PTHREAD_SYMBOLS) __itt_mutex_unlock(&_N_(_ittapi_global).mutex); return state; }