diff --git a/projects/clr/rocclr/runtime/device/pal/palresource.cpp b/projects/clr/rocclr/runtime/device/pal/palresource.cpp index fd0796aaa6..09b3b34d8c 100644 --- a/projects/clr/rocclr/runtime/device/pal/palresource.cpp +++ b/projects/clr/rocclr/runtime/device/pal/palresource.cpp @@ -178,6 +178,9 @@ GpuMemoryReference::GpuMemoryReference(const Device& dev) // ================================================================================================ GpuMemoryReference::~GpuMemoryReference() { + if (nullptr == iMem()) { + return; + } if (gpu_ == nullptr) { Device::ScopedLockVgpus lock(device_); // Release all memory objects on all virtual GPUs @@ -199,15 +202,13 @@ GpuMemoryReference::~GpuMemoryReference() { if (cpuAddress_ != nullptr) { iMem()->Unmap(); } - if (0 != iMem()) { - if (!(iMem()->Desc().flags.isShared || iMem()->Desc().flags.isExternal || - iMem()->Desc().flags.isExternPhys)) { - // Update free memory size counters - device_.updateAllocedMemory(iMem()->Desc().preferredHeap, iMem()->Desc().size, true); - } - iMem()->Destroy(); - gpuMem_ = nullptr; + if (!(iMem()->Desc().flags.isShared || iMem()->Desc().flags.isExternal || + iMem()->Desc().flags.isExternPhys)) { + // Update free memory size counters + device_.updateAllocedMemory(iMem()->Desc().preferredHeap, iMem()->Desc().size, true); } + iMem()->Destroy(); + gpuMem_ = nullptr; } // ================================================================================================