Skip to content

程序内部core但是core栈不完整 #1997

@vinllen

Description

@vinllen

Is your feature request related to a problem? (你需要的功能是否与某个问题有关?)
目前程序core掉(非brpc问题,是我们程序内部bug),core栈只到brpc,我们用的是brpc+tcmalloc,是否有额外的参数能够看到完整的core栈:

Core was generated by `xxx/6700/bi'.
Program terminated with signal 6, Aborted.
#0  0x00007f17ee2401f7 in raise () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-196.el7.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-46.el7.x86_64 libcom_err-1.42.9-10.el7.x86_64 libgcc-4.8.5-39.el7.x86_64 libselinux-2.5-11.el7.x86_64 openssl-libs-1.0.2k-19.el7.x86_64 pcre-8.32-17.el7.x86_64 zlib-1.2.7-17.el7.x86_64
(gdb) bt
#0  0x00007f17ee2401f7 in raise () from /lib64/libc.so.6
#1  0x00007f17ee2418e8 in abort () from /lib64/libc.so.6
#2  0x00000000004b0bd7 in __gnu_cxx::__verbose_terminate_handler () at ../../../../src_tree/gcc/libstdc++-v3/libsupc++/vterminate.cc:95
#3  0x00000000012a01e6 in __cxxabiv1::__terminate(void (*)()) () at ../../../../src_tree/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:47
#4  0x0000000001332e99 in __cxa_call_terminate (ue_header=ue_header@entry=0x2feaa8f90) at ../../../../src_tree/gcc/libstdc++-v3/libsupc++/eh_call.cc:54
#5  0x000000000129fc25 in __gxx_personality_v0 () at ../../../../src_tree/gcc/libstdc++-v3/libsupc++/eh_personality.cc:676
#6  0x00007f17ee5dd8a3 in ?? () from /lib64/libgcc_s.so.1
#7  0x00007f17ee5dddd7 in _Unwind_Resume () from /lib64/libgcc_s.so.1
#8  0x0000000000489888 in operator() (this=<optimized out>, obj=<optimized out>) at infra-cpp-thirdparty/brpc-096/src/brpc/socket_id.h:46
#9  ~unique_ptr (this=<optimized out>, __in_chrg=<optimized out>) at external/ks_build_tools/gcc-8.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../include/c++/8.3.0/bits/unique_ptr.h:274
#10 ~DestroyingPtr (this=<optimized out>, __in_chrg=<optimized out>) at infra-cpp-thirdparty/brpc-096/src/brpc/destroyable.h:42
#11 brpc::policy::ProcessRpcRequest (msg_base=<optimized out>) at infra-cpp-thirdparty/brpc-096/src/brpc/policy/baidu_rpc_protocol.cpp:306
#12 0x0000000000ce5937 in brpc::ProcessInputMessage (void_arg=void_arg@entry=0x56734080) at infra-cpp-thirdparty/brpc-096/src/brpc/input_messenger.cpp:136
#13 0x0000000000ce684a in operator() (this=<synthetic pointer>, last_msg=0x56734080) at infra-cpp-thirdparty/brpc-096/src/brpc/input_messenger.cpp:142
#14 ~unique_ptr (this=<synthetic pointer>, __in_chrg=<optimized out>) at external/ks_build_tools/gcc-8.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../include/c++/8.3.0/bits/unique_ptr.h:274
#15 brpc::InputMessenger::OnNewMessages(brpc::Socket*) () at external/ks_build_tools/gcc-8.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../include/c++/8.3.0/bits/unique_ptr.h:270
#16 0x0000000000d9a9fd in brpc::Socket::ProcessEvent(void*) () at infra-cpp-thirdparty/brpc-096/src/brpc/socket.cpp:1020
#17 0x0000000000e230cf in bthread::TaskGroup::task_runner(long) () at infra-cpp-thirdparty/brpc-096/src/bthread/task_group.cpp:297
#18 0x0000000000e0caa1 in bthread_make_fcontext () at external/ks_build_tools/gcc-8.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../include/c++/8.3.0/new:169
Cannot access memory at address 0x7f17914b1000
(gdb) p *((brpc::InputMessageBase *)0x56734080)
$1 = {<brpc::Destroyable> = {_vptr.Destroyable = 0x1d94590 <vtable for brpc::policy::MostCommonMessage+16>}, _received_us = 8395195236063, _base_real_us = 1660190435757806, _socket = {_M_t = {
      _M_t = {<std::_Tuple_impl<0, brpc::Socket*, brpc::SocketDeleter>> = {<std::_Tuple_impl<1, brpc::SocketDeleter>> = {<std::_Head_base<1, brpc::SocketDeleter, true>> = {<brpc::SocketDeleter> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, brpc::Socket*, false>> = {_M_head_impl = 0x0}, <No data fields>}, <No data fields>}}}, _process = 0xcf03a0 <brpc::policy::ProcessRpcRequest(brpc::InputMessageBase*)>,
  _arg = 0x7ffe60596d80}

Describe the solution you'd like (描述你期望的解决方法)
同一块代码导致的coredump,有的时候coredump能够打到程序中,有的时候打不出来(只能到brpc层),是否有配置上的建议,使得我们能够打印完整的core栈,已经开启了no-omit-frame-pointer,tcmalloc是链接的gperftools源码。

Describe alternatives you've considered (描述你想到的折衷方案)

Additional context/screenshots (更多上下文/截图)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions