diff --git a/source/adapters/level_zero/event.cpp b/source/adapters/level_zero/event.cpp index 172d58dd99..901cc89f1f 100644 --- a/source/adapters/level_zero/event.cpp +++ b/source/adapters/level_zero/event.cpp @@ -882,6 +882,12 @@ urEventRelease(ur_event_handle_t Event ///< [in] handle of the event object ) { Event->RefCountExternal--; 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 (Event->CommandType == UR_COMMAND_EVENTS_WAIT && Event->Completed) { + UR_CALL(CleanupCompletedEvent((Event), false, false)); + UR_CALL(urEventReleaseInternal((Event))); + } return UR_RESULT_SUCCESS; }