Feature #3206 ยป mask_signals_properly_ruby_191.patch
../ruby-1.9.1-p376/eval.c 2010-04-27 10:42:47.523343490 +0100 | ||
---|---|---|
}
|
||
}
|
||
rb_trap_restore_mask();
|
||
if (tag != TAG_FATAL) {
|
||
EXEC_EVENT_HOOK(th, RUBY_EVENT_RAISE, th->cfp->self,
|
||
0 /* TODO: id */, 0 /* TODO: klass */);
|
../ruby-1.9.1-p376/signal.c 2010-04-27 10:42:26.981228311 +0100 | ||
---|---|---|
#if USE_TRAP_MASK
|
||
# ifdef HAVE_SIGPROCMASK
|
||
static sigset_t trap_last_mask;
|
||
static sigset_t timer_thread_last_mask;
|
||
# else
|
||
static int trap_last_mask;
|
||
# endif
|
||
... | ... | |
sigfillset(&mask);
|
||
sigdelset(&mask, SIGVTALRM);
|
||
sigdelset(&mask, SIGSEGV);
|
||
pthread_sigmask(SIG_SETMASK, &mask, NULL);
|
||
pthread_sigmask(SIG_SETMASK, &mask, &timer_thread_last_mask);
|
||
#endif
|
||
}
|
||
... | ... | |
rb_enable_interrupt(void)
|
||
{
|
||
#ifndef _WIN32
|
||
sigset_t mask;
|
||
sigemptyset(&mask);
|
||
pthread_sigmask(SIG_SETMASK, &mask, NULL);
|
||
pthread_sigmask(SIG_SETMASK, &timer_thread_last_mask, NULL);
|
||
#endif
|
||
}
|
||
../ruby-1.9.1-p376/thread_pthread.c 2010-04-27 10:47:42.416099121 +0100 | ||
---|---|---|
thread_timer(void *dummy)
|
||
{
|
||
struct timespec ts;
|
||
#ifndef _WIN32
|
||
sigset_t mask;
|
||
sigfillset(&mask);
|
||
pthread_sigmask(SIG_SETMASK, &mask, NULL);
|
||
#endif
|
||
native_mutex_lock(&timer_thread_lock);
|
||
native_cond_broadcast(&timer_thread_cond);
|