From 019abdc3bd21028d10213631cc931c0487f4b272 Mon Sep 17 00:00:00 2001 From: Sebastian Luzynski Date: Tue, 24 Sep 2024 15:18:06 +0000 Subject: [PATCH] SWDEV-465085 - replace asserts inside API calls This change replaces some asserts, that were only available in debug mode, with standard error handling. Signed-off-by: Sebastian Luzynski Change-Id: I112f9e56f921abd72daf0d11e4ecdcb7b1a9f9e6 --- hipamd/src/hip_code_object.cpp | 11 +++++++---- hipamd/src/hip_code_object.hpp | 2 +- hipamd/src/hip_gl.cpp | 6 ++++-- hipamd/src/hip_memory.cpp | 5 +++-- hipamd/src/hip_platform.cpp | 9 ++++++--- hipamd/src/hip_platform.hpp | 2 +- 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/hipamd/src/hip_code_object.cpp b/hipamd/src/hip_code_object.cpp index 69d4258e79..37d8b0d6b0 100644 --- a/hipamd/src/hip_code_object.cpp +++ b/hipamd/src/hip_code_object.cpp @@ -1163,13 +1163,16 @@ hipError_t StatCO::digestFatBinary(const void* data, FatBinaryInfo*& programs) { return hipSuccess; } -FatBinaryInfo** StatCO::addFatBinary(const void* data, bool initialized) { +FatBinaryInfo** StatCO::addFatBinary(const void* data, bool initialized, bool& success) { amd::ScopedLock lock(sclock_); - if (initialized) { - hipError_t err = digestFatBinary(data, modules_[data]); - assert(err == hipSuccess); + if (initialized == false) { + success = true; + return &modules_[data]; } + + hipError_t err = digestFatBinary(data, modules_[data]); + success = (err == hipSuccess); return &modules_[data]; } diff --git a/hipamd/src/hip_code_object.hpp b/hipamd/src/hip_code_object.hpp index 846280d1b9..dd7e6d28d3 100644 --- a/hipamd/src/hip_code_object.hpp +++ b/hipamd/src/hip_code_object.hpp @@ -160,7 +160,7 @@ public: virtual ~StatCO(); //Add/Remove/Digest Fat Binaries passed to us from "__hipRegisterFatBinary" - FatBinaryInfo** addFatBinary(const void* data, bool initialized); + FatBinaryInfo** addFatBinary(const void* data, bool initialized, bool& success); hipError_t removeFatBinary(FatBinaryInfo** module); hipError_t digestFatBinary(const void* data, FatBinaryInfo*& programs); diff --git a/hipamd/src/hip_gl.cpp b/hipamd/src/hip_gl.cpp index f5cc19a5e5..103f11d87a 100644 --- a/hipamd/src/hip_gl.cpp +++ b/hipamd/src/hip_gl.cpp @@ -194,7 +194,9 @@ hipError_t hipGraphicsSubResourceGetMappedArray(hipArray_t* array, hipGraphicsRe HIP_RETURN(hipErrorInvalidValue); } // arrayIndex higher than zero not implmented - assert(arrayIndex == 0) ; + if (arrayIndex > 0) { + return hipErrorInvalidValue; + } amd::Image * view = image->createView(amdContext, image->getImageFormat(), nullptr, mipLevel, 0); hipArray* myarray = new hipArray(); @@ -770,4 +772,4 @@ hipError_t hipGraphicsUnregisterResource(hipGraphicsResource_t resource) { HIP_RETURN(hipSuccess); } -} // namespace hip \ No newline at end of file +} // namespace hip diff --git a/hipamd/src/hip_memory.cpp b/hipamd/src/hip_memory.cpp index b9d260b22c..5abf3d3397 100644 --- a/hipamd/src/hip_memory.cpp +++ b/hipamd/src/hip_memory.cpp @@ -2191,9 +2191,10 @@ hipError_t ihipMemcpyAtoAValidate(hipArray_t srcArray, hipArray_t dstArray, amd: // HIP assumes the width is in bytes, but OCL assumes it's in pixels. // Note that src and dst should have the same element size. - assert(srcImage->getImageFormat().getElementSize() == - dstImage->getImageFormat().getElementSize()); const size_t elementSize = srcImage->getImageFormat().getElementSize(); + if (elementSize != dstImage->getImageFormat().getElementSize()) { + return hipErrorInvalidValue; + } static_cast(srcOrigin)[0] /= elementSize; static_cast(dstOrigin)[0] /= elementSize; static_cast(copyRegion)[0] /= elementSize; diff --git a/hipamd/src/hip_platform.cpp b/hipamd/src/hip_platform.cpp index 465cd54405..40de044b10 100644 --- a/hipamd/src/hip_platform.cpp +++ b/hipamd/src/hip_platform.cpp @@ -76,7 +76,10 @@ void** __hipRegisterFatBinary(const void* data) { fbwrapper->version); return nullptr; } - return reinterpret_cast(PlatformState::instance().addFatBinary(fbwrapper->binary)); + + bool success{}; + auto fat_binary_info = PlatformState::instance().addFatBinary(fbwrapper->binary, success); + return success ? reinterpret_cast(fat_binary_info) : nullptr; } void __hipRegisterFunction(hip::FatBinaryInfo** modules, const void* hostFunction, @@ -899,8 +902,8 @@ hipError_t PlatformState::digestFatBinary(const void* data, hip::FatBinaryInfo*& return statCO_.digestFatBinary(data, programs); } -hip::FatBinaryInfo** PlatformState::addFatBinary(const void* data) { - return statCO_.addFatBinary(data, initialized_); +hip::FatBinaryInfo** PlatformState::addFatBinary(const void* data, bool& success) { + return statCO_.addFatBinary(data, initialized_, success); } hipError_t PlatformState::removeFatBinary(hip::FatBinaryInfo** module) { diff --git a/hipamd/src/hip_platform.hpp b/hipamd/src/hip_platform.hpp index 46e14143fc..aeeb193618 100644 --- a/hipamd/src/hip_platform.hpp +++ b/hipamd/src/hip_platform.hpp @@ -82,7 +82,7 @@ class PlatformState { } // Static Code Objects functions - hip::FatBinaryInfo** addFatBinary(const void* data); + hip::FatBinaryInfo** addFatBinary(const void* data, bool& success); hipError_t removeFatBinary(hip::FatBinaryInfo** module); hipError_t digestFatBinary(const void* data, hip::FatBinaryInfo*& programs);