From bf90bc8fe8be641faa28960d3ebb1d4ca5efbcee Mon Sep 17 00:00:00 2001 From: Giovanni LB Date: Thu, 1 Feb 2024 14:11:31 -0300 Subject: [PATCH] SWDEV-444112: Fixing plugins race condition Change-Id: I0057d1ade4e1123b878489ff31851b25976217c6 [ROCm/rocprofiler commit: 6ed22f3d6269ebf95c8d0ecf93f2468857527f35] --- projects/rocprofiler/plugin/file/file.cpp | 4 ++-- projects/rocprofiler/plugin/file/file_v1.cpp | 3 +-- projects/rocprofiler/plugin/perfetto/perfetto.cpp | 3 +-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/projects/rocprofiler/plugin/file/file.cpp b/projects/rocprofiler/plugin/file/file.cpp index 2ce3c81b53..63f468af4d 100644 --- a/projects/rocprofiler/plugin/file/file.cpp +++ b/projects/rocprofiler/plugin/file/file.cpp @@ -80,7 +80,6 @@ std::vector GetCounterNames() { return counters; } -static std::string output_file_name; class file_plugin_t { private: enum class output_type_t { COUNTER, TRACER, PC_SAMPLING }; @@ -109,7 +108,8 @@ class file_plugin_t { if (fail()) return; const char* output_dir = getenv("OUTPUT_PATH"); - output_file_name = getenv("OUT_FILE_NAME") ? std::string(getenv("OUT_FILE_NAME")) : ""; + const char* output_file_name_env = getenv("OUT_FILE_NAME"); + std::string output_file_name = output_file_name_env ? output_file_name_env : ""; if (output_dir == nullptr && output_file_name.size() == 0) { stream_.copyfmt(std::cout); diff --git a/projects/rocprofiler/plugin/file/file_v1.cpp b/projects/rocprofiler/plugin/file/file_v1.cpp index 29289b55c3..95b8d666d9 100644 --- a/projects/rocprofiler/plugin/file/file_v1.cpp +++ b/projects/rocprofiler/plugin/file/file_v1.cpp @@ -80,7 +80,6 @@ std::vector GetCounterNames() { return counters; } -static std::string output_file_name; class file_plugin_t { private: enum class output_type_t { COUNTER, TRACER, PC_SAMPLING }; @@ -109,7 +108,7 @@ class file_plugin_t { if (fail()) return; const char* output_dir = getenv("OUTPUT_PATH"); - output_file_name = getenv("OUT_FILE_NAME") ? std::string(getenv("OUT_FILE_NAME")) : ""; + std::string output_file_name = getenv("OUT_FILE_NAME") ? getenv("OUT_FILE_NAME") : ""; if (output_dir == nullptr && getenv("OUT_FILE_NAME") == nullptr) { stream_.copyfmt(std::cout); diff --git a/projects/rocprofiler/plugin/perfetto/perfetto.cpp b/projects/rocprofiler/plugin/perfetto/perfetto.cpp index 5265b16275..fcb0bb79e0 100644 --- a/projects/rocprofiler/plugin/perfetto/perfetto.cpp +++ b/projects/rocprofiler/plugin/perfetto/perfetto.cpp @@ -110,7 +110,6 @@ struct std::hash namespace { std::string process_name; -static std::string output_file_name; std::string get_kernel_name(rocprofiler_record_profiler_t& profiler_record) { std::string kernel_name = ""; @@ -136,7 +135,7 @@ class perfetto_plugin_t { perfetto_plugin_t() { const char* output_dir = getenv("OUTPUT_PATH"); const char* temp_file_name = getenv("OUT_FILE_NAME"); - output_file_name = temp_file_name ? std::string(temp_file_name) + "_" : ""; + std::string output_file_name = temp_file_name ? std::string(temp_file_name) + "_" : ""; if (output_dir == nullptr) output_dir = "./";