diff --git a/sycl/source/detail/scheduler/scheduler.cpp b/sycl/source/detail/scheduler/scheduler.cpp index e2a2286f677e0..dde8333b971c1 100644 --- a/sycl/source/detail/scheduler/scheduler.cpp +++ b/sycl/source/detail/scheduler/scheduler.cpp @@ -419,8 +419,9 @@ void Scheduler::releaseResources(BlockingT Blocking) { // queue_impl, ~queue_impl is called and buffer for assert (which is created // with size only so all confitions for deferred release are satisfied) is // added to deferred mem obj storage. So we may end up with leak. - while (!isDeferredMemObjectsEmpty()) + do { cleanupDeferredMemObjects(Blocking); + } while (Blocking == BlockingT::BLOCKING && !isDeferredMemObjectsEmpty()); } MemObjRecord *Scheduler::getMemObjRecord(const Requirement *const Req) {