Skip to content

Commit

Permalink
posix main add SIGSEGV handler
Browse files Browse the repository at this point in the history
  • Loading branch information
dagar committed May 23, 2018
1 parent 2e14d37 commit bff7418
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 7 deletions.
6 changes: 6 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,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') {
Expand Down
28 changes: 21 additions & 7 deletions platforms/posix/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ extern "C" {
cout.flush();
_ExitFlag = true;
}

void _SigFpeHandler(int sig_num);
void _SigFpeHandler(int sig_num)
{
Expand All @@ -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)
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit bff7418

Please sign in to comment.