0
0
Fork 0
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:
Costa Tsaousis 2025-03-15 15:23:49 +02:00
parent b516bd5067
commit 52182595bf
No known key found for this signature in database
GPG key ID: 3A4F28E963D28A1F
3 changed files with 21 additions and 0 deletions

View file

@ -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

View file

@ -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();

View file

@ -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;