mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-25 00:31:36 +08:00
posix main add SIGSEGV handler
This commit is contained in:
committed by
Lorenz Meier
parent
5234ba49ad
commit
3e843ba2d2
Vendored
+6
@@ -300,6 +300,12 @@ pipeline {
|
||||
}
|
||||
sh 'make distclean'
|
||||
}
|
||||
post {
|
||||
failure {
|
||||
sh('find . -name core')
|
||||
sh('gdb --batch --quiet -ex "thread apply all bt full" -ex "quit" build/posix_sitl_default/px4 core')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('check stack') {
|
||||
|
||||
@@ -83,6 +83,7 @@ extern "C" {
|
||||
cout.flush();
|
||||
_ExitFlag = true;
|
||||
}
|
||||
|
||||
void _SigFpeHandler(int sig_num);
|
||||
void _SigFpeHandler(int sig_num)
|
||||
{
|
||||
@@ -91,6 +92,15 @@ extern "C" {
|
||||
PX4_BACKTRACE();
|
||||
cout.flush();
|
||||
}
|
||||
|
||||
void _SigSegvHandler(int sig_num);
|
||||
void _SigSegvHandler(int sig_num)
|
||||
{
|
||||
cout.flush();
|
||||
cout << endl << "segmentation fault" << endl;
|
||||
PX4_BACKTRACE();
|
||||
cout.flush();
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool fileExists(const string &name)
|
||||
@@ -299,20 +309,24 @@ int main(int argc, char **argv)
|
||||
tcgetattr(0, &orig_term);
|
||||
atexit(restore_term);
|
||||
|
||||
struct sigaction sig_int;
|
||||
memset(&sig_int, 0, sizeof(struct sigaction));
|
||||
// SIGINT
|
||||
struct sigaction sig_int {};
|
||||
sig_int.sa_handler = _SigIntHandler;
|
||||
sig_int.sa_flags = 0;// not SA_RESTART!;
|
||||
sigaction(SIGINT, &sig_int, nullptr);
|
||||
|
||||
struct sigaction sig_fpe;
|
||||
memset(&sig_fpe, 0, sizeof(struct sigaction));
|
||||
// SIGFPE
|
||||
struct sigaction sig_fpe {};
|
||||
sig_fpe.sa_handler = _SigFpeHandler;
|
||||
sig_fpe.sa_flags = 0;// not SA_RESTART!;
|
||||
|
||||
sigaction(SIGINT, &sig_int, nullptr);
|
||||
//sigaction(SIGTERM, &sig_int, NULL);
|
||||
sigaction(SIGFPE, &sig_fpe, nullptr);
|
||||
|
||||
// SIGSEGV
|
||||
struct sigaction sig_segv {};
|
||||
sig_segv.sa_handler = _SigSegvHandler;
|
||||
sig_segv.sa_flags = SA_RESTART | SA_SIGINFO;
|
||||
sigaction(SIGSEGV, &sig_segv, nullptr);
|
||||
|
||||
set_cpu_scaling();
|
||||
|
||||
int index = 1;
|
||||
|
||||
Reference in New Issue
Block a user