mirror of
https://github.com/netdata/netdata.git
synced 2025-03-16 14:03:40 +00:00
prevent sentry from looping signals back to us
This commit is contained in:
parent
b516bd5067
commit
52182595bf
3 changed files with 21 additions and 0 deletions
src/daemon
|
@ -989,6 +989,7 @@ int netdata_main(int argc, char **argv) {
|
|||
// ----------------------------------------------------------------------------------------------------------------
|
||||
delta_startup_time("sentry");
|
||||
|
||||
nd_cleanup_fatal_signals(); // avoid sentry looping deadly signals back to us
|
||||
nd_sentry_init();
|
||||
nd_initialize_signals(true);
|
||||
#endif
|
||||
|
|
|
@ -138,6 +138,25 @@ static void posix_unmask_my_signals(void) {
|
|||
netdata_log_error("SIGNAL: cannot unmask netdata signals");
|
||||
}
|
||||
|
||||
void nd_cleanup_fatal_signals(void) {
|
||||
struct sigaction act;
|
||||
memset(&act, 0, sizeof(struct sigaction));
|
||||
|
||||
// ignore all signals while we run in a signal handler
|
||||
sigfillset(&act.sa_mask);
|
||||
|
||||
for (size_t i = 0; i < _countof(signals_waiting); i++) {
|
||||
if(signals_waiting[i].action != NETDATA_SIGNAL_DEADLY)
|
||||
continue;
|
||||
|
||||
act.sa_flags = 0;
|
||||
act.sa_handler = SIG_DFL;
|
||||
|
||||
if (sigaction(signals_waiting[i].signo, &act, NULL) == -1)
|
||||
netdata_log_error("SIGNAL: Failed to cleanup signal handler for: %s", signals_waiting[i].name);
|
||||
}
|
||||
}
|
||||
|
||||
void nd_initialize_signals(bool chain_existing) {
|
||||
signals_block_all_except_deadly();
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#ifndef NETDATA_SIGNAL_HANDLER_H
|
||||
#define NETDATA_SIGNAL_HANDLER_H 1
|
||||
|
||||
void nd_cleanup_fatal_signals(void);
|
||||
void nd_initialize_signals(bool chain_existing);
|
||||
void nd_process_signals(void) NORETURN;
|
||||
|
||||
|
|
Loading…
Reference in a new issue