diff --git a/src/core/impl/graph/var_node_mem_mgr.cpp b/src/core/impl/graph/var_node_mem_mgr.cpp index caff321c..0ed7ddc8 100644 --- a/src/core/impl/graph/var_node_mem_mgr.cpp +++ b/src/core/impl/graph/var_node_mem_mgr.cpp @@ -546,6 +546,13 @@ bool VarNodeMemManager::free_combine_memory_no_need_var() { size_t size = var->layout().span().dist_byte(); storage.ensure_size(size); storage.copy_from(var->m_dev_tensor.storage(), size); + auto ref_cn = + var->m_dev_tensor.storage().raw_storage().use_count(); + //! var->m_dev_tensor.storage() will free now, + //! insure do not trigger UAF issue for copy_from. + if (ref_cn <= 2) { + comp_node.sync(); + } var->m_dev_tensor.reset(storage, var->layout()); opr_base->mutable_values()[index]->reset(