diff --git a/sycl/source/detail/scheduler/scheduler.cpp b/sycl/source/detail/scheduler/scheduler.cpp index 1f72fa85e1a82..81d27161bd9dd 100644 --- a/sycl/source/detail/scheduler/scheduler.cpp +++ b/sycl/source/detail/scheduler/scheduler.cpp @@ -448,7 +448,12 @@ MemObjRecord *Scheduler::getMemObjRecord(const Requirement *const Req) { void Scheduler::cleanupCommands(const std::vector &Cmds) { if (Cmds.empty()) - return; + { + std::lock_guard Lock{MDeferredCleanupMutex}; + if (MDeferredCleanupCommands.empty()) + return; + } + WriteLockT Lock(MGraphLock, std::try_to_lock); // In order to avoid deadlocks related to blocked commands, defer cleanup if // the lock wasn't acquired.