核心转储,但我找不到错误位置,有GDB的错误信息

时间:2016-08-09 08:26:33

标签: c++ linux arangodb .so

Program terminated with signal 11, Segmentation fault.
#0  0x000000340f87a31f in _int_malloc () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.192.el6.x86_64 keyutils-libs-1.4-5.el6.x86_64 krb5-libs-1.10.3-57.el6.x86_64 libcom_err-1.41.12-22.el6.x86_64 libgcc-4.4.7-17.el6.x86_64 libselinux-2.0.94-7.el6.x86_64 libuuid-2.17.2-12.24.el6.x86_64 nss-softokn-freebl-3.12.9-11.el6.x86_64 openssl-1.0.1e-48.el6_8.1.x86_64 zlib-1.2.3-29.el6.x86_64
(gdb) where
#0  0x000000340f87a31f in _int_malloc () from /lib64/libc.so.6
#1  0x000000340f87abfc in malloc () from /lib64/libc.so.6
#2  0x00000000004a913b in UDataMemory_createNewInstance_54 ()
#3  0x00000000004a7ac7 in doLoadFromCommonData(signed char, char const*, char const*, char const*, char const*, char const*, char const*, char const*, signed char (*)(void*, char const*, char const*, UDataInfo const*), void*, UErrorCode*, UErrorCode*) ()
#4  0x00000000004a89cb in doOpenChoice(char const*, char const*, char const*, signed char (*)(void*, char const*, char const*, UDataInfo const*), void*, UErrorCode*) ()
#5  0x000000000045febd in icu_54::CollationRoot::load(UErrorCode&) ()
#6  0x000000000045ffe8 in icu_54::CollationRoot::getRootCacheEntry(UErrorCode&) ()
#7  0x000000000044b29a in icu_54::CollationLoader::loadTailoring(icu_54::Locale const&, UErrorCode&) ()
#8  0x000000000042d668 in icu_54::Collator::createInstance(icu_54::Locale const&, UErrorCode&) ()
#9  0x0000000000412691 in triagens::basics::Utf8Helper::setCollatorLanguage(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#10 0x00000000004120aa in triagens::basics::Utf8Helper::Utf8Helper(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#11 0x00000000004120ed in triagens::basics::Utf8Helper::Utf8Helper() ()
#12 0x0000000000414ac0 in __static_initialization_and_destruction_0 ()
#13 0x0000000000414ae9 in _GLOBAL__sub_I__ZN8triagens6basics10Utf8Helper17DefaultUtf8HelperE ()
#14 0x000000000050d5e6 in __do_global_ctors_aux ()
#15 0x00000000004085cb in _init ()
#16 0x00007fc223318068 in boost::system::native_ecat () from /home/workspace/DLL_CPPServer/Debug/libDLL_CPPServer.so
#17 0x000000000050d525 in __libc_csu_init ()
#18 0x000000340f81ecb0 in __libc_start_main () from /lib64/libc.so.6

以上代码是GDB信息; triagens::basics::Utf8Helper::Utf8Helper()没有被称为我的代码。首先,我认为它被3rdParty库调用,并且该方法存在于第三方的源代码中;但是当我搜索{时,我发现它没有被使用{1}}密钥。   所以我不知道原因,你能帮助我吗?

2 个答案:

答案 0 :(得分:0)

@MatthewFisher嗯。我在doLoadFromCommonData上设置了一个断点,但它没有工作,程序没有加入它。我使用&#39;导出MALLOC_CHECK_ = 2&#39;和&#39; ./test&#39; ,它产生一个核心.4675。使用&#39; gdb ./test core.4675&#39; &#39;在哪里&#39;制作了一段:

`Program terminated with signal 11, Segmentation fault.
#0  0x000000340f876009 in malloc_consolidate () from /lib64/libc.so.6
#0  0x000000340f876009 in malloc_consolidate () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.192.el6.x86_64 keyutils-libs-1.4-5.el6.x86_64 krb5-libs-1.10.3-57.el6.x86_64 libcom_err-1.41.12-22.el6.x86_64 libgcc-4.4.7-17.el6.x86_64 libselinux-2.0.94-7.el6.x86_64 libuuid-2.17.2-12.24.el6.x86_64 nss-softokn-freebl-3.12.9-11.el6.x86_64 openssl-1.0.1e-48.el6_8.1.x86_64 zlib-1.2.3-29.el6.x86_64
(gdb) where
#0  0x000000340f876009 in malloc_consolidate () from /lib64/libc.so.6
#1  0x000000340f879d08 in _int_malloc () from /lib64/libc.so.6
#2  0x000000340f87c538 in malloc_check () from /lib64/libc.so.6
#3  0x000000340f87ab31 in calloc () from /lib64/libc.so.6
#4  0x000000340f835ca4 in __new_exitfn () from /lib64/libc.so.6
#5  0x000000340f835d58 in __cxa_atexit_internal () from /lib64/libc.so.6
#6  0x000000000041f1c9 in __static_initialization_and_destruction_0 ()
#7  0x000000000041f238 in _GLOBAL__sub_I_TRI_prioritynames ()
#8  0x000000000050d5e6 in __do_global_ctors_aux ()
#9  0x00000000004085cb in _init ()
#10 0x00007f7f1dc5a068 in boost::system::native_ecat () from /home/workspace/DLL_CPPServer/Debug/libDLL_CPPServer.so
#11 0x000000000050d525 in __libc_csu_init ()
#12 0x000000340f81ecb0 in __libc_start_main () from /lib64/libc.so.6
#13 0x0000000000409449 in _start ()`

答案 1 :(得分:0)

有代码:

CompletePortLogFile::CCompletePortLogFile(string sFullPath)
{
        _sFullPath = sFullPath;
        InitializeCriticalSection(&_freeStackLock);
        InitializeCriticalSection(&_fileLock);
        _hFile = NULL;
        _hCompletePort = NULL;
        _nTotalSize = 0;
        _nPackageNo = 0;
}


if(NULL==g_pLogFile)
{
        g_pLogFile = new IOTP::CCompletePortLogFile(".\\CPPServer.log");
        g_pLogFile->init();
}

有GDB的错误信息:

Program received signal SIGSEGV, Segmentation fault.
0x000000340f87a31f in _int_malloc () from /lib64/libc.so.6
(gdb) where
#0  0x000000340f87a31f in _int_malloc () from /lib64/libc.so.6
#1  0x000000340f87abfc in malloc () from /lib64/libc.so.6
#2  0x0000003e8005e808 in operator new(unsigned long) ()
    at ../../../../gcc-4.9.2/libstdc++-v3/libsupc++/new_op.cc:49
#3  0x0000003e800c3c49 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) ()
    at /home/hewei/download/gcc-build-4.9.2/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/new_allocator.h:104
#4  0x0000003e800c55c5 in char* std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) ()
    at /home/hewei/download/gcc-build-4.9.2/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/basic_string.tcc:138
#5  0x0000003e800c59f6 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) ()
    at /home/hewei/download/gcc-build-4.9.2/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/basic_string.h:1743
#6  0x00007ffff7dd12e3 in iotp_initGlobalLogFile() () at ../src/main/ActivemqServer.cpp:62
#7  0x00007ffff7dd13bf in iotp_GetLibraryInstance () at ../src/main/ActivemqServer.cpp:71
#8  0x000000000040147b in testDLL(char*) ()
#9  0x00000000004016a2 in main ()