diff --git a/unified-runtime/source/adapters/cuda/context.hpp b/unified-runtime/source/adapters/cuda/context.hpp index 0837907b4f5a7..737f5d64e1cb6 100644 --- a/unified-runtime/source/adapters/cuda/context.hpp +++ b/unified-runtime/source/adapters/cuda/context.hpp @@ -107,14 +107,19 @@ struct ur_context_handle_t_ : ur::cuda::handle_base { UR_CHECK_ERROR(urAdapterRetain(ur::cuda::adapter)); }; - ~ur_context_handle_t_() { - if (MemoryPoolHost) { - umfPoolDestroy(MemoryPoolHost); + ~ur_context_handle_t_() noexcept { + try { + if (MemoryPoolHost) { + umfPoolDestroy(MemoryPoolHost); + } + if (MemoryProviderHost) { + umfMemoryProviderDestroy(MemoryProviderHost); + } + urAdapterRelease(ur::cuda::adapter); + } catch (...) { + UR_LOG(ERR, "Exception in context destructor"); + assert(false && "Exception in context destructor"); } - if (MemoryProviderHost) { - umfMemoryProviderDestroy(MemoryProviderHost); - } - UR_CHECK_ERROR(urAdapterRelease(ur::cuda::adapter)); } void invokeExtendedDeleters() { diff --git a/unified-runtime/source/adapters/hip/context.hpp b/unified-runtime/source/adapters/hip/context.hpp index 120d5346d497f..bcdb59d2c2c69 100644 --- a/unified-runtime/source/adapters/hip/context.hpp +++ b/unified-runtime/source/adapters/hip/context.hpp @@ -96,8 +96,13 @@ struct ur_context_handle_t_ : ur::hip::handle_base { UR_CHECK_ERROR(urAdapterRetain(ur::hip::adapter)); }; - ~ur_context_handle_t_() { - UR_CHECK_ERROR(urAdapterRelease(ur::hip::adapter)); + ~ur_context_handle_t_() noexcept { + try { + urAdapterRelease(ur::hip::adapter); + } catch (...) { + UR_LOG(ERR, "Exception in context destructor"); + assert(false && "Exception in context destructor"); + } } ur_context_handle_t_(const ur_context_handle_t_ &) = delete;