Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MNN内存泄漏检查 #2873

Open
jamesdod opened this issue May 17, 2024 · 2 comments
Open

MNN内存泄漏检查 #2873

jamesdod opened this issue May 17, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@jamesdod
Copy link

平台(如果交叉编译请再附上交叉编译目标平台):

linux,x86_64

Github版本:

2.8.2

编译方式:

cd build
cmake ..
make

运行命令

./MNNV2Basic.out test.mnn 2 0 3 1

即循环两次,使用opencl推理,线程数为1

内存检查日志

==3421355== 72 bytes in 1 blocks are still reachable in loss record 457 of 541
==3421355==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355==    by 0x57CCDA1: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x57D0503: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x4D36EE7: __pthread_once_slow (pthread_once.c:116)
==3421355==    by 0x155E8C: MNN::MNNGetExtraRuntimeCreator(MNNForwardType) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x18703A: MNN::Schedule::getApprociateType(MNN::ScheduleConfig const&) (in ./mnn/build/MNNV2Basic.out)
==3421355== 
==3421355== 72 bytes in 1 blocks are still reachable in loss record 458 of 541
==3421355==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355==    by 0x57CCF33: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x57D0503: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x4D36EE7: __pthread_once_slow (pthread_once.c:116)
==3421355==    by 0x155E8C: MNN::MNNGetExtraRuntimeCreator(MNNForwardType) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x18703A: MNN::Schedule::getApprociateType(MNN::ScheduleConfig const&) (in ./mnn/build/MNNV2Basic.out)
==3421355== 
==3421355== 72 bytes in 1 blocks are possibly lost in loss record 459 of 541
==3421355==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355==    by 0x5AF8172: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x59AD299: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x59A8314: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x5956D5E: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x57D04FA: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355== 
==3421355== 72 bytes in 1 blocks are possibly lost in loss record 460 of 541
==3421355==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355==    by 0x59B73A0: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x59B78A1: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x59B79FA: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x59577B1: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x57D04FA: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355== 
==3421355== 80 bytes in 1 blocks are still reachable in loss record 461 of 541
==3421355==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355==    by 0x5B4ADC1: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x5955772: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x57D04FA: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x4D36EE7: __pthread_once_slow (pthread_once.c:116)
==3421355==    by 0x155E8C: MNN::MNNGetExtraRuntimeCreator(MNNForwardType) (in ./mnn/build/MNNV2Basic.out)
==3421355== 
==3421355== 80 bytes in 1 blocks are still reachable in loss record 462 of 541
==3421355==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355==    by 0x57CCE02: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x57D0503: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x4D36EE7: __pthread_once_slow (pthread_once.c:116)
==3421355==    by 0x155E8C: MNN::MNNGetExtraRuntimeCreator(MNNForwardType) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x18703A: MNN::Schedule::getApprociateType(MNN::ScheduleConfig const&) (in ./mnn/build/MNNV2Basic.out)
==3421355== 
==3421355== 88 bytes in 1 blocks are still reachable in loss record 463 of 541
==3421355==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355==    by 0x57E8869: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x57CDF0E: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x3A951E: MNN::OpenCLRuntime::setCache(std::pair<void const*, unsigned long>) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x393982: MNN::OpenCL::CLRuntime::onSetCache(void const*, unsigned long) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x16FB25: MNN::Interpreter::createMultiPathSession(std::vector<MNN::ScheduleConfig, std::allocator<MNN::ScheduleConfig> > const&, std::pair<std::map<MNNForwardType, std::shared_ptr<MNN::Runtime>, std::less<MNNForwardType>, std::allocator<std::pair<MNNForwardType const, std::shared_ptr<MNN::Runtime> > > >, std::shared_ptr<MNN::Runtime> > const&) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x16FEC3: MNN::Interpreter::createMultiPathSession(std::vector<MNN::ScheduleConfig, std::allocator<MNN::ScheduleConfig> > const&) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x1708AB: MNN::Interpreter::createSession(MNN::ScheduleConfig const&) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x1536E2: test_main(int, char const**) [clone .isra.0] (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x145BDC: main (in ./mnn/build/MNNV2Basic.out)
==3421355== 
==3421355== 120 bytes in 1 blocks are still reachable in loss record 464 of 541
==3421355==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355==    by 0x5AD5939: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x5ACD737: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x5956F79: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x57D04FA: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355==    by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355==    by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355==    by 0x4D36EE7: __pthread_once_slow (pthread_once.c:116)
==3421355== 
==3421355== LEAK SUMMARY:
==3421355==    definitely lost: 0 bytes in 0 blocks
==3421355==    indirectly lost: 0 bytes in 0 blocks
==3421355==      possibly lost: 2,120 bytes in 15 blocks
==3421355==    still reachable: 3,497,681 bytes in 554 blocks
==3421355==         suppressed: 0 bytes in 0 blocks

其中

==3421355==      possibly lost: 2,120 bytes in 15 blocks
==3421355==    still reachable: 3,497,681 bytes in 554 blocks

是否表示存在内存泄漏问题

@jxt1234
Copy link
Collaborator

jxt1234 commented May 22, 2024

看着是有问题,我们检查一下

@jxt1234 jxt1234 added the bug Something isn't working label May 22, 2024
@jamesdod
Copy link
Author

有更新的信息么

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants