diff --git a/projects/clr/hipamd/src/hip_device.cpp b/projects/clr/hipamd/src/hip_device.cpp index fedd62e56d..a3d059ac89 100644 --- a/projects/clr/hipamd/src/hip_device.cpp +++ b/projects/clr/hipamd/src/hip_device.cpp @@ -107,13 +107,16 @@ void Device::RemoveStreamFromPools(Stream* stream) { // ================================================================================================ void Device::Reset() { - auto it = mem_pools_.begin(); - while (it != mem_pools_.end()) { - auto current = it++; - (*current)->ReleaseAllMemory(); - delete *current; + { + amd::ScopedLock lock(lock_); + auto it = mem_pools_.begin(); + while (it != mem_pools_.end()) { + auto current = it++; + (*current)->ReleaseAllMemory(); + delete *current; + } + mem_pools_.clear(); } - mem_pools_.clear(); flags_ = hipDeviceScheduleSpin; hip::Stream::destroyAllStreams(deviceId_); amd::MemObjMap::Purge(devices()[0]); diff --git a/projects/clr/hipamd/src/hip_internal.hpp b/projects/clr/hipamd/src/hip_internal.hpp index 31ec410d5c..2c3f7fb919 100644 --- a/projects/clr/hipamd/src/hip_internal.hpp +++ b/projects/clr/hipamd/src/hip_internal.hpp @@ -382,7 +382,7 @@ namespace hip { /// HIP Device class class Device { - amd::Monitor lock_{"Device lock"}; + amd::Monitor lock_{"Device lock", true}; /// ROCclr context amd::Context* context_; /// Device's ID