From c667dc6fa0614b7d4a0ea952ad587950495af084 Mon Sep 17 00:00:00 2001 From: Satyanvesh Dittakavi Date: Wed, 16 Sep 2020 14:14:13 +0000 Subject: [PATCH] set free mem to zero avoding underflow Change-Id: I964b41695fb41712624146c5959a35b37eacf52d [ROCm/clr commit: 90c694988b9171612c9b611cf9f0f21be3fa0bd6] --- projects/clr/rocclr/device/rocm/rocdevice.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/clr/rocclr/device/rocm/rocdevice.cpp b/projects/clr/rocclr/device/rocm/rocdevice.cpp index d5ccfc53b8..500ba672c3 100755 --- a/projects/clr/rocclr/device/rocm/rocdevice.cpp +++ b/projects/clr/rocclr/device/rocm/rocdevice.cpp @@ -1818,6 +1818,16 @@ void Device::updateFreeMemory(size_t size, bool free) { freeMem_ += size; } else { + if (size > freeMem_) { + // To avoid underflow of the freeMem_ + // This can happen if the free mem tracked is inaccurate, as some allocations can happen + // directly via ROCr + ClPrint(amd::LOG_ERROR, amd::LOG_ALWAYS, + "Free memory set to zero on device 0x%lx, requested size = 0x%x, freeMem_ = 0x%x", + this, size, freeMem_.load()); + freeMem_ = 0; + return; + } freeMem_ -= size; } ClPrint(amd::LOG_INFO, amd::LOG_MEM, "device=0x%lx, freeMem_ = 0x%x", this, freeMem_.load());