From 223f5dbc59f9cb898777bb8e5efe809d966dc881 Mon Sep 17 00:00:00 2001 From: ko1 Date: Mon, 12 Jun 2017 04:52:25 +0000 Subject: remove ruby_kill() introduced for [Bug #7951]. * thread.c (rbuy_kill): removed. This function is used with SIGSEGV, SIGBUS, SIGKILL, SIGILL, SIGFPE and SIGSTOP and these signals are affect immediately. So that `kill(2)' is enough for them. * signal.c (rb_f_kill): ditto. * vm_core.h (rb_thread_t::interrupt_cond): removed because only `ruby_kill()' uses this field. * test/ruby/test_signal.rb: Without this patch sending SIGSTOP to own process wait another interrupt even if another process sends SIGCONT. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59066 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- thread.c | 28 ---------------------------- 1 file changed, 28 deletions(-) (limited to 'thread.c') diff --git a/thread.c b/thread.c index 74cdf4f3c7..b05e721b18 100644 --- a/thread.c +++ b/thread.c @@ -425,7 +425,6 @@ rb_threadptr_interrupt_common(rb_thread_t *th, int trap) else { /* none */ } - native_cond_signal(&th->interrupt_cond); native_mutex_unlock(&th->interrupt_lock); } @@ -549,7 +548,6 @@ thread_cleanup_func(void *th_ptr, int atfork) return; native_mutex_destroy(&th->interrupt_lock); - native_cond_destroy(&th->interrupt_cond); native_thread_destroy(th); } @@ -739,7 +737,6 @@ thread_create_core(VALUE thval, VALUE args, VALUE (*fn)(ANYARGS)) th->interrupt_mask = 0; native_mutex_initialize(&th->interrupt_lock); - native_cond_initialize(&th->interrupt_cond, RB_CONDATTR_CLOCK_MONOTONIC); th->report_on_exception = th->vm->thread_report_on_exception; /* kick thread */ @@ -4920,8 +4917,6 @@ Init_Thread(void) gvl_acquire(th->vm, th); native_mutex_initialize(&th->vm->thread_destruct_lock); native_mutex_initialize(&th->interrupt_lock); - native_cond_initialize(&th->interrupt_cond, - RB_CONDATTR_CLOCK_MONOTONIC); th->pending_interrupt_queue = rb_ary_tmp_new(0); th->pending_interrupt_queue_checked = 0; @@ -5077,26 +5072,3 @@ rb_uninterruptible(VALUE (*b_proc)(ANYARGS), VALUE data) return rb_ensure(b_proc, data, rb_ary_pop, cur_th->pending_interrupt_mask_stack); } - -void -ruby_kill(rb_pid_t pid, int sig) -{ - int err; - rb_thread_t *th = GET_THREAD(); - - /* - * When target pid is self, many caller assume signal will be - * delivered immediately and synchronously. - */ - { - GVL_UNLOCK_BEGIN(); - native_mutex_lock(&th->interrupt_lock); - err = kill(pid, sig); - native_cond_wait(&th->interrupt_cond, &th->interrupt_lock); - native_mutex_unlock(&th->interrupt_lock); - GVL_UNLOCK_END(); - } - if (err < 0) { - rb_sys_fail(0); - } -} -- cgit v1.2.3