avoiding early destruction of code objects list (#847)

Этот коммит содержится в:
Vladimir Indic
2024-05-08 11:00:08 +02:00
коммит произвёл GitHub
родитель 1f96593b4f
Коммит 358c599c3f
2 изменённых файлов: 6 добавлений и 4 удалений
+6 -3
Просмотреть файл
@@ -80,7 +80,7 @@ using kernel_symbol_map_t = std::unordered_map<rocprofiler_kernel_id_t, kernel_
rocprofiler_client_id_t* client_id = nullptr;
rocprofiler_client_finalize_t client_fini_func = nullptr;
rocprofiler_context_id_t client_ctx = {};
kernel_symbol_map_t client_kernels = {};
kernel_symbol_map_t* client_kernels = nullptr;
std::string
cxa_demangle(std::string_view _mangled_name, int* _status)
@@ -252,12 +252,12 @@ tool_tracing_callback(rocprofiler_callback_tracing_record_t record,
if(record.phase == ROCPROFILER_CALLBACK_PHASE_LOAD)
{
info << "kernel symbol load :: ";
client_kernels.emplace(data->kernel_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<call_stack_t*>(tool_data);
@@ -328,6 +330,7 @@ tool_fini(void* tool_data)
print_call_stack(*_call_stack);
delete _call_stack;
delete client_kernels;
}
void