为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:7
【操作系统】:centos7
【CPU】:intel
【问题描述】*:
DCI库内存泄露
HEAP SUMMARY:
47286 in use at exit: 523,213 bytes in 2,983 blocks
47286 total heap usage: 5,256,471 allocs, 5,253,488 frees, 398,060,437 bytes allocated
47286
47286 380 bytes in 1 blocks are possibly lost in loss record 185 of 240
47286 at 0x4C29F73: malloc (vg_replace_malloc.c:309)
47286 by 0x7D5DA8E: os_malloc_ex (in /root/calculation_service/output_debug/lib/libzhbr_mysql.so.1.2)
47286 by 0x7D5DAAD: os_malloc (in /root/calculation_service/output_debug/lib/libzhbr_mysql.so.1.2)
47286 by 0x7D55162: mem2_malloc_ex (in /root/calculation_service/output_debug/lib/libzhbr_mysql.so.1.2)
47286 by 0x7DE626D: comm_rdma_init (in /root/calculation_service/output_debug/lib/libzhbr_mysql.so.1.2)
47286 by 0x7D0EAF8: dpi_init (in /root/calculation_service/output_debug/lib/libzhbr_mysql.so.1.2)
47286 by 0x7CF6D4A: dpi_module_init (in /root/calculation_service/output_debug/lib/libzhbr_mysql.so.1.2)
47286 by 0x7DF8E6D: dmoci_init_low (in /root/calculation_service/output_debug/lib/libzhbr_mysql.so.1.2)
47286 by 0x7DF8EC1: dmoci_init (in /root/calculation_service/output_debug/lib/libzhbr_mysql.so.1.2)
47286 by 0x7CD54EE: OCIInitialize_inner (in /root/calculation_service/output_debug/lib/libzhbr_mysql.so.1.2)
47286 by 0x7CD5539: DCIInitialize (in /root/calculation_service/output_debug/lib/libzhbr_mysql.so.1.2)
测试代码
#include <iostream>
#include "DCI.h"
int main(int argc, char* argv[])
{
OCIEnv m_oci_env;
DCIEnvCreate(&m_oci_env, OCI_DEFAULT, NULL, NULL, NULL, NULL, 0, 0);
DCIHandleFree((void)m_oci_env, DCI_HTYPE_ENV);
return 0;
}
CMakeLists.txt
project(zhbr_mysql)
cmake_minimum_required(VERSION 3.8)
set(BF_SDK_HOME .)
INCLUDE_DIRECTORIES(./include
.
)
IF(WIN32)
ELSEIF(UNIX)
LINK_DIRECTORIES(/usr/local/lib
./lib)
ENDIF()
AUX_SOURCE_DIRECTORY(. SRC_DIR)
ADD_EXECUTABLE(${PROJECT_NAME} ${SRC_DIR})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} dmdci dl pthread)
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY .)
valgrind 调试命令
valgrind --log-file=test.log --tool=memcheck --leak-check=full --track-origins=yes --show-leak-kinds=all ./zhbr_mysql
报错
84757 Memcheck, a memory error detector
84757 Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
84757 Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
84757 Command: ./zhbr_mysql
84757 Parent PID: 84756
84757
84757
84757 HEAP SUMMARY:
84757 in use at exit: 167,681 bytes in 17 blocks
84757 total heap usage: 4,009 allocs, 3,992 frees, 318,308 bytes allocated
84757
84757 32 bytes in 1 blocks are still reachable in loss record 1 of 15
84757 at 0x4C2C089: calloc (vg_replace_malloc.c:762)
84757 by 0x5A3A60F: _dlerror_run (in /usr/lib64/libdl-2.17.so)
84757 by 0x5A3A040: dlopen@@GLIBC_2.2.5 (in /usr/lib64/libdl-2.17.so)
84757 by 0x4FB9682: dm_dlopen (in /home/znddmpc/code/example/lib/libdmdci.so)
84757 by 0x50815D4: dm_auth_init (in /home/znddmpc/code/example/lib/libdmdci.so)
84757 by 0x4F635DA: dpi_init (in /home/znddmpc/code/example/lib/libdmdci.so)
84757 by 0x4F63444: __static_initialization_and_destruction_0(int, int) (in /home/znddmpc/code/example/lib/libdmdci.so)
84757 by 0x50860C5: ??? (in /home/znddmpc/code/example/lib/libdmdci.so)
84757 by 0x4EDBB72: ??? (in /home/znddmpc/code/example/lib/libdmdci.so)
84757
84757 43 bytes in 1 blocks are still reachable in loss record 2 of 15
84757 at 0x4C29F73: malloc (vg_replace_malloc.c:309)
84757 by 0x4005AFD: open_path (in /usr/lib64/ld-2.17.so)
84757 by 0x4008A8D: _dl_map_object (in /usr/lib64/ld-2.17.so)
84757 by 0x40142A3: dl_open_worker (in /usr/lib64/ld-2.17.so)
84757 by 0x400F7D3: _dl_catch_error (in /usr/lib64/ld-2.17.so)
84757 by 0x4013B8A: _dl_open (in /usr/lib64/ld-2.17.so)
84757 by 0x5A39FAA: dlopen_doit (in /usr/lib64/libdl-2.17.so)
84757 by 0x400F7D3: _dl_catch_error (in /usr/lib64/ld-2.17.so)
84757 by 0x5A3A5AC: _dlerror_run (in /usr/lib64/libdl-2.17.so)
84757 by 0x5A3A040: dlopen@@GLIBC_2.2.5 (in /usr/lib64/libdl-2.17.so)
84757 by 0x4FB9682: dm_dlopen (in /home/znddmpc/code/example/lib/libdmdci.so)
84757 by 0x5078110: vio_load_ssl_lib (in /home/znddmpc/code/example/lib/libdmdci.so)
84757
84757 46 bytes in 1 blocks are still reachable in loss record 3 of 15
84757 at 0x4C29F73: malloc (vg_replace_malloc.c:309)
84757 by 0x4005AFD: open_path (in /usr/lib64/ld-2.17.so)
84757 by 0x4008A8D: _dl_map_object (in /usr/lib64/ld-2.17.so)
84757 by 0x40142A3: dl_open_worker (in /usr/lib64/ld-2.17.so)
84757 by 0x400F7D3: _dl_catch_error (in /usr/lib64/ld-2.17.so)
84757 by 0x4013B8A: _dl_open (in /usr/lib64/ld-2.17.so)
84757 by 0x5A39FAA: dlopen_doit (in /usr/lib64/libdl-2.17.so)
84757 by 0x400F7D3: _dl_catch_error (in /usr/lib64/ld-2.17.so)
84757 by 0x5A3A5AC: _dlerror_run (in /usr/lib64/libdl-2.17.so)
84757 by 0x5A3A040: dlopen@@GLIBC_2.2.5 (in /usr/lib64/libdl-2.17.so)
84757 by 0x4FB9682: dm_dlopen (in /home/znddmpc/code/example/lib/libdmdci.so)
84757 by 0x5078156: vio_load_ssl_lib (in /home/znddmpc/code/example/lib/libdmdci.so)
获取客户端版本信息为
11.2.0-0-0
libdmdci.so md5sum
ea93d9810a149ef64ffc9d6cf32d1461 libdmdci.so
是否可以提供上传下完整的示例和完整日志。
另外看帖子给部分信息,是不是用DCI去依赖mysql数据库包,是否访问的是达梦数据库。