core/linux/os.c
/* process a signal this process/thread is sending to itself */
process a signal this process/thread is sending to itself
process a signal this process / thread is sending to itself
static void
handle_self_signal(dcontext_t *dcontext, uint sig)
{
    if (sig == SIGABRT && !DYNAMO_OPTION(intercept_all_signals)) {
        LOG(GLOBAL, LOG_TOP|LOG_SYSCALLS, 1,
            "thread %d sending itself a SIGABRT\n", get_thread_id());
        KSTOP(num_exits_dir_syscall);
        cleanup_and_terminate(dcontext, SYS_exit, -1, 0,
                              (is_last_app_thread() && !dynamo_exited));
        ASSERT_NOT_REACHED();
    }
}
static void handle_self_signal ( dcontext_t * dcontext , uint sig ) { if ( sig == SIGABRT && ! DYNAMO_OPTION ( intercept_all_signals ) ) { LOG ( GLOBAL , LOG_TOP | LOG_SYSCALLS , 1 , " \n " , get_thread_id ( ) ) ; KSTOP ( num_exits_dir_syscall ) ; cleanup_and_terminate ( dcontext , SYS_exit , -1 , 0 , ( is_last_app_thread ( ) && ! dynamo_exited ) ) ; ASSERT_NOT_REACHED ( ) ; } }
process a signal this process/thread is sending to itself
process a signal this process / thread is sending to itself
/* FIXME PR 297903: watch for all DEFAULT_TERMINATE signals,
     * and for any thread in the group, not just self.
     *
     * FIXME PR 297033: watch for SIGSTOP and SIGCONT.
     *
     * With -intercept_all_signals, we only need to watch for SIGKILL
     * and SIGSTOP here, and we avoid the FIXMEs below.  If it's fine
     * for DR not to clean up on a SIGKILL, then SIGSTOP is all that's
     * left (at least once we have PR 297033 and are intercepting the
     * various STOP variations and CONT).
     */ /* FIXME: need to check whether app has a handler for SIGABRT! */ /* FIXME PR 211180/6723: this will do SYS_exit rather than the SIGABRT.
         * Should do set_default_signal_action(SIGABRT) (and set a flag so
         * no races w/ another thread re-installing?) and then SYS_kill.
         */