+ /* signal block -------------- */
+ sigset_t old_mask, all_mask;
+ sigfillset(&all_mask);
+ sigprocmask(SIG_BLOCK, &all_mask, &old_mask);
+
+ filename = g_strdup_printf("/tmp/mm_session_%d", getpid());
+ if (!remove(filename)) {
+ debug_log(" remove %s success\n", filename);
+ } else {
+ strerror_r (errno, str_error, sizeof (str_error));
+ debug_error(" remove %s failed with %s\n", filename, str_error);
+ }
+
+ g_free(filename);
+
+ sigprocmask(SIG_SETMASK, &old_mask, NULL);
+ /* signal unblock ------------ */
+
+ switch (signo) {
+ case SIGINT:
+ sigaction(SIGINT, &session_int_old_action, NULL);
+ raise(signo);
+ break;
+ case SIGABRT:
+ sigaction(SIGABRT, &session_abrt_old_action, NULL);
+ raise(signo);
+ break;
+ case SIGSEGV:
+ sigaction(SIGSEGV, &session_segv_old_action, NULL);
+ raise(signo);
+ break;
+ case SIGTERM:
+ sigaction(SIGTERM, &session_term_old_action, NULL);
+ raise(signo);
+ break;
+ case SIGSYS:
+ sigaction(SIGSYS, &session_sys_old_action, NULL);
+ raise(signo);
+ break;
+ case SIGXCPU:
+ sigaction(SIGXCPU, &session_xcpu_old_action, NULL);
+ raise(signo);
+ break;
+ default:
+ break;
+ }
+
+ debug_warning("LEAVE");