From 211a1019a5071f5e8a5326ff27f9343d83cb4392 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Mon, 3 Feb 2025 10:09:15 +0000 Subject: [PATCH] Merge pull request #2612 from nrspruit/destroy_wait_always [L0]: fix missing destroy of event given enqueue wait out event --- source/adapters/level_zero/event.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/adapters/level_zero/event.cpp b/source/adapters/level_zero/event.cpp index 27557919b5..32153689bd 100644 --- a/source/adapters/level_zero/event.cpp +++ b/source/adapters/level_zero/event.cpp @@ -881,7 +881,14 @@ ur_result_t urEventRelease(ur_event_handle_t Event ///< [in] handle of the event object ) { Event->RefCountExternal--; + bool isEventsWaitCompleted = + Event->CommandType == UR_COMMAND_EVENTS_WAIT && Event->Completed; UR_CALL(urEventReleaseInternal(Event)); + // If this is a Completed Event Wait Out Event, then we need to cleanup the + // event at user release and not at the time of completion. + if (isEventsWaitCompleted) { + UR_CALL(CleanupCompletedEvent((Event), false, false)); + } return UR_RESULT_SUCCESS; }