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]