yiguolei commented on pull request #8544:
URL: https://github.com/apache/incubator-doris/pull/8544#issuecomment-1073260712


   Both exception stack and signal core stack will lost line number info. For 
example I have rewrite glog's signal handler and could print more detail info 
during core.
   For example, we could add a error code to tabelt.cpp, like this:
   `
   --- a/be/src/olap/tablet.cpp
   +++ b/be/src/olap/tablet.cpp
   @@ -82,6 +82,8 @@ Tablet::Tablet(TabletMetaSharedPtr tablet_meta, DataDir* 
data_dir,
   
        INT_COUNTER_METRIC_REGISTER(_metric_entity, flush_bytes);
        INT_COUNTER_METRIC_REGISTER(_metric_entity, flush_count);
   +    std::vector<int>* a = nullptr;
   +    a->push_back(1);
    }
   `
   It will cause segment fault like this:
   
   `
     *** Aborted at 1647785336 (unix time) try "date -d @1647785336" if you are 
using GNU date ***
     *** SIGSEGV address not mapped to object (@0x8) received by PID 8750 (TID 
0x7fe2423da700) from PID 8; stack trace: ***
     0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, 
siginfo_t*, void*) at 
/data/ygl/code/github/incubator-doris/be/src/common/signal_handler.h:423
    1# 0x00007FE255D23270 in /lib64/libc.so.6
    2# doris::Tablet::Tablet(std::shared_ptr<doris::TabletMeta>, 
doris::DataDir*, std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > const&) at /data/ygl/code/github/incubato    
r-doris/be/src/olap/tablet.cpp:86
    3# 
doris::Tablet::create_tablet_from_meta(std::shared_ptr<doris::TabletMeta>, 
doris::DataDir*) at 
/data/ygl/code/github/incubator-doris/be/src/olap/tablet.cpp:61
    4# doris::TabletManager::load_tablet_from_meta(doris::DataDir*, long, int, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&, bool, bool, bool, bool) at /data/ygl    
/code/github/incubator-doris/toolchain/include/c++/11/bits/shared_ptr.h:122
    5# std::_Function_handler<bool (long, long, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&), doris::DataDir::load()::{lambda(long, int, std::__cxx11::basic_str    
ing<char, std::char_traits<char>, std::allocator<char> > 
const&)#2}>::_M_invoke(std::_Any_data const&, long&&, long&&, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
c    onst&) at 
/data/ygl/code/github/incubator-doris/toolchain/include/c++/11/bits/std_function.h:291
    6# std::_Function_handler<bool (std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
    const&), doris::TabletMetaManager::traverse_headers(doris::OlapMeta*, 
std::function<bool (long, long, std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&)> const&,     
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > const&, std::__cxx11::b    asic_string<char, 
std::char_traits<char>, std::allocator<char> > 
const&)#1}>::_M_invoke(std::_Any_data const&, std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, s    
td::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&) at 
/data/ygl/code/github/incubator-doris/toolchain/include/c++/11/bits/std_function.h:291
    7# doris::OlapMeta::iterate(int, std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, std::function<bool 
(std::__cxx11::basic_string<char, std::char_traits<char>, s    
td::allocator<char> > const&, std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&)> const&) at 
/data/ygl/code/github/incubator-doris/be/src/olap/olap_meta.cpp:183
    8# doris::TabletMetaManager::traverse_headers(doris::OlapMeta*, 
std::function<bool (long, long, std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&)> const&, std::_    
_cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&) at 
/data/ygl/code/github/incubator-doris/be/src/olap/tablet_meta_manager.cpp:134
    9# doris::DataDir::load() at 
/data/ygl/code/github/incubator-doris/be/src/olap/data_dir.cpp:453
   10# 
std::thread::_State_impl<std::thread::_Invoker<std::tuple<doris::StorageEngine::load_data_dirs(std::vector<doris::DataDir*,
 std::allocator<doris::DataDir*> > const&)::{lambda()#1}> > >::_M_run() a    t 
/data/ygl/code/github/incubator-doris/toolchain/include/c++/11/bits/std_thread.h:211
    11# execute_native_thread_routine in 
/data/ygl/code/github/incubator-doris/test_output/be/lib/palo_be
    12# start_thread in /lib64/libpthread.so.0
    13# clone in /lib64/libc.so.6
   `
   
   We could add it as an option, but not the default option. We could build a 
very small release binary for apache svn but not for 
    all developers.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to