···262262 if (sig_handlers[linux_signum])
263263 {
264264 kern_printf("sigexc: will forward signal to app handler (%p)\n", sig_handlers[linux_signum]);
265265+266266+ // Update the signal mask to what the application actually wanted
267267+ linux_sigset_t set = sig_masks[linux_signum];
268268+269269+ // Keep the current signal blocked, which is the default behavior
270270+ if (!(sig_flags[linux_signum] & LINUX_SA_NODEFER))
271271+ set |= (1ull << (linux_signum-1));
272272+273273+ LINUX_SYSCALL(__NR_rt_sigprocmask, 2 /* LINUX_SIG_SETMASK */,
274274+ &set, NULL, sizeof(linux_sigset_t));
275275+265276 handler_linux_to_bsd(linux_signum, info, ctxt);
266277 }
267278 else