diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-06-12 04:52:25 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-06-12 04:52:25 +0000 |
commit | 6c3f1461cd8052486f8e124f8f899447f653505b (patch) | |
tree | f302d31ad61acb16aece3788f803559c771e3348 /thread.c | |
parent | a57d295e36980fe7667f5557c4741339d7684fdc (diff) | |
download | bundler-6c3f1461cd8052486f8e124f8f899447f653505b.tar.gz |
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
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 28 |
1 files changed, 0 insertions, 28 deletions
@@ -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); - } -} |