From 700aecb384581300203b95b2038d3cfa2e9c078a Mon Sep 17 00:00:00 2001 From: davidoli Date: Fri, 13 Aug 2021 16:42:41 -0700 Subject: [PATCH] Fix tracer disable re_enable bug Related-To: LOCI-2395 Signed-off-by: davidoli --- .../experimental/source/tracing/tracing_imp.cpp | 13 ++++++------- .../experimental/source/tracing/tracing_imp.h | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/level_zero/experimental/source/tracing/tracing_imp.cpp b/level_zero/experimental/source/tracing/tracing_imp.cpp index 0cf2f15160..105c48aa42 100644 --- a/level_zero/experimental/source/tracing/tracing_imp.cpp +++ b/level_zero/experimental/source/tracing/tracing_imp.cpp @@ -172,7 +172,7 @@ size_t APITracerContextImp::testAndFreeRetiredTracers() { return this->retiringTracerArrayList.size(); } -int APITracerContextImp::updateTracerArrays() { +size_t APITracerContextImp::updateTracerArrays() { tracer_array_t *newTracerArray; size_t newTracerArrayCount = this->enabledTracerImpList.size(); @@ -211,9 +211,7 @@ int APITracerContextImp::updateTracerArrays() { // from this thread to the tracing threads. // activeTracerArray.store(newTracerArray, std::memory_order_release); - testAndFreeRetiredTracers(); - - return 0; + return testAndFreeRetiredTracers(); } ze_result_t APITracerContextImp::enableTracingImp(struct APITracerImp *tracerImp, ze_bool_t enable) { @@ -233,13 +231,14 @@ ze_result_t APITracerContextImp::enableTracingImp(struct APITracerImp *tracerImp if (!enable) { enabledTracerImpList.remove(tracerImp); tracerImp->tracingState = disabledWaitingState; - updateTracerArrays(); + if (updateTracerArrays() == 0) + tracerImp->tracingState = disabledState; } result = ZE_RESULT_SUCCESS; break; case disabledWaitingState: - result = ZE_RESULT_ERROR_UNINITIALIZED; + result = ZE_RESULT_ERROR_HANDLE_OBJECT_IN_USE; break; default: @@ -273,7 +272,7 @@ ze_result_t APITracerContextImp::finalizeDisableImpTracingWait(struct APITracerI break; case enabledState: - result = ZE_RESULT_ERROR_UNINITIALIZED; + result = ZE_RESULT_ERROR_HANDLE_OBJECT_IN_USE; break; case disabledWaitingState: diff --git a/level_zero/experimental/source/tracing/tracing_imp.h b/level_zero/experimental/source/tracing/tracing_imp.h index 3321bc0d3a..a8577cdec0 100644 --- a/level_zero/experimental/source/tracing/tracing_imp.h +++ b/level_zero/experimental/source/tracing/tracing_imp.h @@ -127,7 +127,7 @@ struct APITracerContextImp : APITracerContext { ze_bool_t testForTracerArrayReferences(tracer_array_t *tracerArray); size_t testAndFreeRetiredTracers(); - int updateTracerArrays(); + size_t updateTracerArrays(); std::list threadTracerDataList; std::mutex threadTracerDataListMutex;