From 6600fd792a9a1ffd402ef7021fa7bdc119cb9732 Mon Sep 17 00:00:00 2001 From: Pranav Sharma Date: Thu, 16 Mar 2023 08:01:46 -0700 Subject: [PATCH] Fix CPU memory leak due to external weights not getting memory unmapped when using non-CPU EP. (#15040) --- onnxruntime/core/framework/session_state_utils.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/onnxruntime/core/framework/session_state_utils.cc b/onnxruntime/core/framework/session_state_utils.cc index 4f4b71a8ac..0a1720b5b7 100644 --- a/onnxruntime/core/framework/session_state_utils.cc +++ b/onnxruntime/core/framework/session_state_utils.cc @@ -161,9 +161,11 @@ static common::Status DeserializeTensorProto(const Env& env, const std::basic_st } OrtCallback ext_data_deleter; + std::optional scoped_ort_callback_invoker; if (utils::HasExternalData(tensor_proto)) { ORT_RETURN_IF_ERROR(ExtDataTensorProtoToTensor(env, proto_path, tensor_proto, *p_deserialize_tensor, ext_data_deleter)); + scoped_ort_callback_invoker = ScopedOrtCallbackInvoker(ext_data_deleter); } else { ORT_RETURN_IF_ERROR(utils::TensorProtoToTensor(env, proto_path.c_str(), tensor_proto, *p_deserialize_tensor)); }