diff --git a/trunk/src/app/srs_app_server.cpp b/trunk/src/app/srs_app_server.cpp index 10fb9c156..48f36475f 100644 --- a/trunk/src/app/srs_app_server.cpp +++ b/trunk/src/app/srs_app_server.cpp @@ -294,6 +294,11 @@ srs_error_t SrsSignalManager::start() sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sigaction(SRS_SIGNAL_GRACEFULLY_QUIT, &sa, NULL); + + sa.sa_handler = SrsSignalManager::sig_catcher; + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sigaction(SRS_SIGNAL_ASSERT_ABORT, &sa, NULL); sa.sa_handler = SrsSignalManager::sig_catcher; sigemptyset(&sa.sa_mask); @@ -971,6 +976,13 @@ srs_error_t SrsServer::cycle() void SrsServer::on_signal(int signo) { + // For signal to quit with coredump. + if (signo == SRS_SIGNAL_ASSERT_ABORT) { + srs_trace("abort with coredump, signo=%d", signo); + srs_assert(false); + return; + } + if (signo == SRS_SIGNAL_RELOAD) { srs_trace("reload config, signo=%d", signo); signal_reload = true; diff --git a/trunk/src/kernel/srs_kernel_consts.hpp b/trunk/src/kernel/srs_kernel_consts.hpp index 5cac4a4bc..83099ff09 100644 --- a/trunk/src/kernel/srs_kernel_consts.hpp +++ b/trunk/src/kernel/srs_kernel_consts.hpp @@ -125,6 +125,8 @@ // The signal for srs to gracefully quit, do carefully dispose then exit. // @see https://github.com/ossrs/srs/issues/1579 #define SRS_SIGNAL_GRACEFULLY_QUIT SIGQUIT +// The signal for SRS to abort by assert(false). +#define SRS_SIGNAL_ASSERT_ABORT SIGABRT // The application level signals. // Persistence the config in memory to config file.