From 4c2b0702cfd045afb31f8d197ed511dbe7c4d10d Mon Sep 17 00:00:00 2001 From: "Neil R. Spruit" Date: Mon, 17 Mar 2025 10:21:59 -0700 Subject: [PATCH] [UR][L0] Release parent of sub-buffer when sub-buffer dies This commit fixes an issue where the sub-buffer object in the L0 V1 adapter would not release its retained parent, causing leaks. Signed-off-by: Neil R. Spruit --- source/adapters/level_zero/memory.cpp | 5 +++++ source/adapters/level_zero/memory.hpp | 2 ++ 2 files changed, 7 insertions(+) diff --git a/source/adapters/level_zero/memory.cpp b/source/adapters/level_zero/memory.cpp index 5283ea4da3..cf3a3197c4 100644 --- a/source/adapters/level_zero/memory.cpp +++ b/source/adapters/level_zero/memory.cpp @@ -2368,6 +2368,11 @@ _ur_buffer::_ur_buffer(ur_context_handle_t Context, size_t Size, LastDeviceWithValidAllocation = Device; } +_ur_buffer::~_ur_buffer() { + if (isSubBuffer()) + ur::level_zero::urMemRelease(SubBuffer->Parent); +} + ur_result_t _ur_buffer::getZeHandlePtr(char **&ZeHandlePtr, access_mode_t AccessMode, ur_device_handle_t Device, diff --git a/source/adapters/level_zero/memory.hpp b/source/adapters/level_zero/memory.hpp index c2e653b297..652f3e3363 100644 --- a/source/adapters/level_zero/memory.hpp +++ b/source/adapters/level_zero/memory.hpp @@ -116,6 +116,8 @@ struct _ur_buffer final : ur_mem_handle_t_ { Parent->RefCount.increment(); } + ~_ur_buffer(); + // Interop-buffer constructor _ur_buffer(ur_context_handle_t Context, size_t Size, ur_device_handle_t Device, char *ZeMemHandle, bool OwnZeMemHandle);