From 358c599c3fcbebdb231f23a148420f1e975853e1 Mon Sep 17 00:00:00 2001 From: Vladimir Indic <139573562+vlaindic@users.noreply.github.com> Date: Wed, 8 May 2024 11:00:08 +0200 Subject: [PATCH] avoiding early destruction of code objects list (#847) --- samples/code_object_tracing/client.cpp | 9 ++++++--- source/lib/rocprofiler-sdk/code_object/code_object.cpp | 1 - 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/samples/code_object_tracing/client.cpp b/samples/code_object_tracing/client.cpp index 66bc648ec6..368386294b 100644 --- a/samples/code_object_tracing/client.cpp +++ b/samples/code_object_tracing/client.cpp @@ -80,7 +80,7 @@ using kernel_symbol_map_t = std::unordered_mapkernel_id, *data); + client_kernels->emplace(data->kernel_id, *data); } else if(record.phase == ROCPROFILER_CALLBACK_PHASE_UNLOAD) { info << "kernel symbol unload :: "; - client_kernels.erase(data->kernel_id); + client_kernels->erase(data->kernel_id); } auto kernel_name = std::regex_replace(data->kernel_name, std::regex{"(\\.kd)$"}, ""); @@ -281,6 +281,8 @@ tool_tracing_callback(rocprofiler_callback_tracing_record_t record, int tool_init(rocprofiler_client_finalize_t fini_func, void* tool_data) { + client_kernels = new kernel_symbol_map_t{}; + assert(tool_data != nullptr); auto* call_stack_v = static_cast(tool_data); @@ -328,6 +330,7 @@ tool_fini(void* tool_data) print_call_stack(*_call_stack); delete _call_stack; + delete client_kernels; } void diff --git a/source/lib/rocprofiler-sdk/code_object/code_object.cpp b/source/lib/rocprofiler-sdk/code_object/code_object.cpp index 2e2aabc1b6..ac04da0e9b 100644 --- a/source/lib/rocprofiler-sdk/code_object/code_object.cpp +++ b/source/lib/rocprofiler-sdk/code_object/code_object.cpp @@ -405,7 +405,6 @@ get_code_objects() { static auto*& _v = common::static_object>::construct(); - static auto _dtor = common::scope_destructor{[]() { finalize(); }}; return _v; }