31namespace trap_handler {
33#if V8_TRAP_HANDLER_SUPPORTED
35struct sigaction g_old_handler;
39bool g_is_default_signal_handler_registered;
44 TH_CHECK(!g_is_default_signal_handler_registered);
46 struct sigaction action;
55 action.sa_flags = SA_SIGINFO | SA_ONSTACK;
56 sigemptyset(&action.sa_mask);
60 if (sigaction(kOobSignal, &action, &g_old_handler) != 0) {
69#if defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER) || \
70 defined(THREAD_SANITIZER) || defined(LEAK_SANITIZER) || \
71 defined(UNDEFINED_SANITIZER)
72 struct sigaction installed_handler;
73 TH_CHECK(sigaction(kOobSignal, NULL, &installed_handler) == 0);
78 "WARNING: sanitizers are preventing signal handler installation. "
79 "Trap handlers are disabled.\n");
84 g_is_default_signal_handler_registered =
true;
89 if (g_is_default_signal_handler_registered) {
90 if (sigaction(kOobSignal, &g_old_handler,
nullptr) == 0) {
91 g_is_default_signal_handler_registered =
false;
bool RegisterDefaultTrapHandler()
void HandleSignal(int signum, siginfo_t *info, void *context)
#define TH_CHECK(condition)