memory leak in LoadSavedModel
**System information**
- OS Platform and Distribution (e.g., Linux Ubuntu 20.04): Ubuntu 16.04
- DeepRec version or commit id: newest
- Python version: C++
- Bazel version (if compiling from source): bazel 7.4
- GCC/Compiler version (if compiling from source): gcc 7
- CUDA/cuDNN version: none
**Describe the current behavior**
build my C++ program add asan to check memory leak, like this: --copt=-fsanitize=address --copt=-fno-omit-frame-pointer --linkopt=-fsanitize=address
**Describe the expected behavior**
```
Direct leak of 24 byte(s) in 1 object(s) allocated from:
#0 0x7f045a741488 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe0488)
#1 0x7f044c8f1ca8 in tensorflow::RegisterXlaDeviceKernels(char const*, char const*) (libtensorflow_cc.so.1+0x2aadca8)
#2 0x7f044c8dda12 in tensorflow::XlaCpuDeviceFactory::CreateDevices(tensorflow::SessionOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> >, std::allocator<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> > > >*, tensorflow::DeviceResourceMgrMap const*, tensorflow::DeviceGlobalThreadPoolOptions const&) (libtensorflow_cc.so.1+0x2a99a12)
#3 0x7f0449395fdd in tensorflow::DeviceFactory::AddDevices(tensorflow::SessionOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> >, std::allocator<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> > > >*, tensorflow::DeviceResourceMgrMap const*, tensorflow::DeviceGlobalThreadPoolOptions const&) (libtensorflow_framework.so.1+0x112efdd)
#4 0x7f0458024179 in tensorflow::DirectSessionFactory::NewSessionGroup(tensorflow::SessionOptions const&, tensorflow::SessionGroup**, tensorflow::SessionGroupMetadata const&) (libtensorflow_cc.so.1+0xe1e0179)
#5 0x7f04494458a3 in tensorflow::NewSessionGroup(tensorflow::SessionOptions const&, tensorflow::SessionGroup**, tensorflow::SessionGroupMetadata const&) (libtensorflow_framework.so.1+0x11de8a3)
#6 0x7f04489a3215 in tensorflow::(anonymous namespace)::LoadSavedModelInternal(tensorflow::SessionGroupOptions const&, tensorflow::RunOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, tensorflow::SavedModelBundleV2*) (libtensorflow_framework.so.1+0x73c215)
#7 0x7f04489a4376 in tensorflow::LoadSavedModel(tensorflow::SessionGroupOptions const&, tensorflow::RunOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, tensorflow::SavedModelBundleV2*) (libtensorflow_framework.so.1+0x73d376)
#8 0x6df292 in (anonymous namespace)::LoadSavedModel(std::unique_ptr<tensorflow::SessionGroup, std::default_delete<tensorflow::SessionGroup> >&, tensorflow::GraphDef&, tensorflow::SignatureDef&, char const*, tensorflow::SessionGroupOptions const&, tensorflow::RunOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6df292)
#9 0x6e0f02 in yy::predict::TfModel::load_save_model(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6e0f02)
#10 0x6e143a in yy::predict::TfModel::init(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6e143a)
#11 0x6d92de in yy::predict::Predictor::init(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6d92de)
#12 0x6fd717 in main (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6fd717)
#13 0x7f0446f8f82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
Indirect leak of 4096 byte(s) in 1 object(s) allocated from:
#0 0x7f045a741488 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe0488)
#1 0x7f044c8f1a65 in void std::vector<std::unique_ptr<tensorflow::kernel_factory::OpKernelRegistrar, std::default_delete<tensorflow::kernel_factory::OpKernelRegistrar> >, std::allocator<std::unique_ptr<tensorflow::kernel_factory::OpKernelRegistrar, std::default_delete<tensorflow::kernel_factory::OpKernelRegistrar> > > >::_M_realloc_insert<tensorflow::kernel_factory::OpKernelRegistrar*>(__gnu_cxx::__normal_iterator<std::unique_ptr<tensorflow::kernel_factory::OpKernelRegistrar, std::default_delete<tensorflow::kernel_factory::OpKernelRegistrar> >*, std::vector<std::unique_ptr<tensorflow::kernel_factory::OpKernelRegistrar, std::default_delete<tensorflow::kernel_factory::OpKernelRegistrar> >, std::allocator<std::unique_ptr<tensorflow::kernel_factory::OpKernelRegistrar, std::default_delete<tensorflow::kernel_factory::OpKernelRegistrar> > > > >, tensorflow::kernel_factory::OpKernelRegistrar*&&) (libtensorflow_cc.so.1+0x2aada65)
#2 0x7f044c8f1ed6 in tensorflow::RegisterXlaDeviceKernels(char const*, char const*) (libtensorflow_cc.so.1+0x2aaded6)
#3 0x7f044c8dda12 in tensorflow::XlaCpuDeviceFactory::CreateDevices(tensorflow::SessionOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> >, std::allocator<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> > > >*, tensorflow::DeviceResourceMgrMap const*, tensorflow::DeviceGlobalThreadPoolOptions const&) (libtensorflow_cc.so.1+0x2a99a12)
#4 0x7f0449395fdd in tensorflow::DeviceFactory::AddDevices(tensorflow::SessionOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> >, std::allocator<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> > > >*, tensorflow::DeviceResourceMgrMap const*, tensorflow::DeviceGlobalThreadPoolOptions const&) (libtensorflow_framework.so.1+0x112efdd)
#5 0x7f0458024179 in tensorflow::DirectSessionFactory::NewSessionGroup(tensorflow::SessionOptions const&, tensorflow::SessionGroup**, tensorflow::SessionGroupMetadata const&) (libtensorflow_cc.so.1+0xe1e0179)
#6 0x7f04494458a3 in tensorflow::NewSessionGroup(tensorflow::SessionOptions const&, tensorflow::SessionGroup**, tensorflow::SessionGroupMetadata const&) (libtensorflow_framework.so.1+0x11de8a3)
#7 0x7f04489a3215 in tensorflow::(anonymous namespace)::LoadSavedModelInternal(tensorflow::SessionGroupOptions const&, tensorflow::RunOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, tensorflow::SavedModelBundleV2*) (libtensorflow_framework.so.1+0x73c215)
#8 0x7f04489a4376 in tensorflow::LoadSavedModel(tensorflow::SessionGroupOptions const&, tensorflow::RunOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, tensorflow::SavedModelBundleV2*) (libtensorflow_framework.so.1+0x73d376)
#9 0x6df292 in (anonymous namespace)::LoadSavedModel(std::unique_ptr<tensorflow::SessionGroup, std::default_delete<tensorflow::SessionGroup> >&, tensorflow::GraphDef&, tensorflow::SignatureDef&, char const*, tensorflow::SessionGroupOptions const&, tensorflow::RunOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6df292)
#10 0x6e0f02 in yy::predict::TfModel::load_save_model(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6e0f02)
#11 0x6e143a in yy::predict::TfModel::init(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6e143a)
#12 0x6d92de in yy::predict::Predictor::init(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6d92de)
#13 0x6fd717 in main (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6fd717)
#14 0x7f0446f8f82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
Indirect leak of 372 byte(s) in 372 object(s) allocated from:
#0 0x7f045a741488 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe0488)
#1 0x7f044c8f1d70 in tensorflow::RegisterXlaDeviceKernels(char const*, char const*) (libtensorflow_cc.so.1+0x2aadd70)
#2 0x7f044c8dda12 in tensorflow::XlaCpuDeviceFactory::CreateDevices(tensorflow::SessionOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> >, std::allocator<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> > > >*, tensorflow::DeviceResourceMgrMap const*, tensorflow::DeviceGlobalThreadPoolOptions const&) (libtensorflow_cc.so.1+0x2a99a12)
#3 0x7f0449395fdd in tensorflow::DeviceFactory::AddDevices(tensorflow::SessionOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> >, std::allocator<std::unique_ptr<tensorflow::Device, std::default_delete<tensorflow::Device> > > >*, tensorflow::DeviceResourceMgrMap const*, tensorflow::DeviceGlobalThreadPoolOptions const&) (libtensorflow_framework.so.1+0x112efdd)
#4 0x7f0458024179 in tensorflow::DirectSessionFactory::NewSessionGroup(tensorflow::SessionOptions const&, tensorflow::SessionGroup**, tensorflow::SessionGroupMetadata const&) (libtensorflow_cc.so.1+0xe1e0179)
#5 0x7f04494458a3 in tensorflow::NewSessionGroup(tensorflow::SessionOptions const&, tensorflow::SessionGroup**, tensorflow::SessionGroupMetadata const&) (libtensorflow_framework.so.1+0x11de8a3)
#6 0x7f04489a3215 in tensorflow::(anonymous namespace)::LoadSavedModelInternal(tensorflow::SessionGroupOptions const&, tensorflow::RunOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, tensorflow::SavedModelBundleV2*) (libtensorflow_framework.so.1+0x73c215)
#7 0x7f04489a4376 in tensorflow::LoadSavedModel(tensorflow::SessionGroupOptions const&, tensorflow::RunOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, tensorflow::SavedModelBundleV2*) (libtensorflow_framework.so.1+0x73d376)
#8 0x6df292 in (anonymous namespace)::LoadSavedModel(std::unique_ptr<tensorflow::SessionGroup, std::default_delete<tensorflow::SessionGroup> >&, tensorflow::GraphDef&, tensorflow::SignatureDef&, char const*, tensorflow::SessionGroupOptions const&, tensorflow::RunOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6df292)
#9 0x6e0f02 in yy::predict::TfModel::load_save_model(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6e0f02)
#10 0x6e143a in yy::predict::TfModel::init(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6e143a)
#11 0x6d92de in yy::predict::Predictor::init(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6d92de)
#12 0x6fd717 in main (/data/services/model-serving/lzh_swipemodel_v2/predict_test+0x6fd717)
#13 0x7f0446f8f82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
SUMMARY: AddressSanitizer: 4492 byte(s) leaked in 374 allocation(s).
```
**Code to reproduce the issue**
Provide a reproducible test case that is the bare minimum necessary to generate the problem.
**Other info / logs**
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.
0 条评论