src: remove freebsd SA_RESETHAND workaround
This workaround should no longer be necessary with supported versions of FreeSBD. Originally introduced in commit b64983d77c ("src: reset signal handler to SIG_DFL on FreeBSD") from March 2015. Fixes: https://github.com/nodejs/node/issues/27515 PR-URL: https://github.com/nodejs/node/pull/27780 Refs: https://github.com/nodejs/node/pull/27246#discussion_r279636813 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
This commit is contained in:
parent
165916b1f3
commit
6e796581fc
12
src/node.cc
12
src/node.cc
@ -191,13 +191,6 @@ void WaitForInspectorDisconnect(Environment* env) {
|
|||||||
#ifdef __POSIX__
|
#ifdef __POSIX__
|
||||||
void SignalExit(int signo, siginfo_t* info, void* ucontext) {
|
void SignalExit(int signo, siginfo_t* info, void* ucontext) {
|
||||||
uv_tty_reset_mode();
|
uv_tty_reset_mode();
|
||||||
#ifdef __FreeBSD__
|
|
||||||
// FreeBSD has a nasty bug, see RegisterSignalHandler for details
|
|
||||||
struct sigaction sa;
|
|
||||||
memset(&sa, 0, sizeof(sa));
|
|
||||||
sa.sa_handler = SIG_DFL;
|
|
||||||
CHECK_EQ(sigaction(signo, &sa, nullptr), 0);
|
|
||||||
#endif
|
|
||||||
raise(signo);
|
raise(signo);
|
||||||
}
|
}
|
||||||
#endif // __POSIX__
|
#endif // __POSIX__
|
||||||
@ -480,12 +473,7 @@ void RegisterSignalHandler(int signal,
|
|||||||
struct sigaction sa;
|
struct sigaction sa;
|
||||||
memset(&sa, 0, sizeof(sa));
|
memset(&sa, 0, sizeof(sa));
|
||||||
sa.sa_sigaction = handler;
|
sa.sa_sigaction = handler;
|
||||||
#ifndef __FreeBSD__
|
|
||||||
// FreeBSD has a nasty bug with SA_RESETHAND reseting the SA_SIGINFO, that is
|
|
||||||
// in turn set for a libthr wrapper. This leads to a crash.
|
|
||||||
// Work around the issue by manually setting SIG_DFL in the signal handler
|
|
||||||
sa.sa_flags = reset_handler ? SA_RESETHAND : 0;
|
sa.sa_flags = reset_handler ? SA_RESETHAND : 0;
|
||||||
#endif
|
|
||||||
sigfillset(&sa.sa_mask);
|
sigfillset(&sa.sa_mask);
|
||||||
CHECK_EQ(sigaction(signal, &sa, nullptr), 0);
|
CHECK_EQ(sigaction(signal, &sa, nullptr), 0);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user