in aws/utils/signal_handler.cc [43:108]
static void signal_handler(int, siginfo_t *info, void *) {
WRITE_MESSAGE("\n++++\n");
if (info->si_signo == SIGUSR1) {
WRITE_MESSAGE("[INFO]\n");
WRITE_MESSAGE("User Requested Stack Trace\n");
WRITE_MESSAGE("---BEGIN INFO---\n");
} else {
WRITE_MESSAGE("[ERROR]\n");
WRITE_MESSAGE("---BEGIN ERROR----\n");
}
WRITE_MESSAGE("Signal: ");
switch (info->si_signo) {
case SIGQUIT:
WRITE_MESSAGE("SIGQUIT")
break;
case SIGILL:
WRITE_MESSAGE("SIGILL: ");
WRITE_MESSAGE(" Code: (");
WRITE_CODE(info->si_code);
WRITE_MESSAGE(") Address: ");
WRITE_POINTER(info->si_addr);
break;
case SIGBUS:
WRITE_MESSAGE("SIGBUS");
WRITE_MESSAGE(" Code: (");
WRITE_CODE(info->si_code);
WRITE_MESSAGE(") Address: ");
WRITE_POINTER(info->si_addr);
break;
case SIGSEGV:
WRITE_MESSAGE("SIGSEGV");
WRITE_MESSAGE(" Code: (");
WRITE_CODE(info->si_code);
WRITE_MESSAGE(") Address: ");
WRITE_POINTER(info->si_addr);
break;
case SIGUSR1:
WRITE_MESSAGE("SIGUSR1");
break;
default:
WRITE_MESSAGE("Unhandled Signal(");
WRITE_NUM_CHECKED(info->si_signo, "Negative Signal?");
WRITE_MESSAGE(")");
break;
}
WRITE_MESSAGE("\n");
WRITE_MESSAGE("Description: ");
write_signal_description(info->si_signo);
WRITE_MESSAGE("\n");
WRITE_MESSAGE("---BEGIN STACK TRACE---\n");
aws::utils::backtrace::stack_trace_for_signal();
WRITE_MESSAGE("---END STACK TRACE---\n");
if (info->si_signo == SIGUSR1) {
WRITE_MESSAGE("---END INFO---\n");
} else {
WRITE_MESSAGE("---END ERROR---\n");
}
WRITE_MESSAGE("----\n");
if (info->si_signo != SIGUSR1) {
abort();
}
}