diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-06-30 22:29:34 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-06-30 22:29:34 +0000 |
commit | fa4514e4fedc1e1390200e3901e2add22a4a27b4 (patch) | |
tree | 1570296a48f3bd30e36bf682431defe49f05846e /bootstraptest | |
parent | 198c2570e740280bf7f00a38d311ade19c27fef7 (diff) | |
download | ruby-fa4514e4fedc1e1390200e3901e2add22a4a27b4.tar.gz |
* thread.c (rb_threadptr_check_signal): only wake up main thread.
* thread.c (rb_threadptr_execute_interrupts_common): check signal
deliverly if it is main thread.
fixes [ruby-dev:44005] [Ruby 1.9 - Bug #4950]
* bootstraptest/test_fork.rb: add a test for above.
* signal.c (rb_get_next_signal): skip if signal_buff is empty.
(check signal_buff.size first)
* vm_core.h: remove unused variable rb_thread_t::exec_signal.
* thread.c (rb_thread_check_trap_pending): check
rb_signal_buff_size() because rb_thread_t::exec_signal
is no longer available.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'bootstraptest')
-rw-r--r-- | bootstraptest/test_fork.rb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/bootstraptest/test_fork.rb b/bootstraptest/test_fork.rb index d9e92c7a6b..384294727f 100644 --- a/bootstraptest/test_fork.rb +++ b/bootstraptest/test_fork.rb @@ -47,3 +47,23 @@ assert_equal 'ok', %q{ :ok end }, '[ruby-core:28924]' + +assert_equal '[1, 2]', %q{ + a = [] + trap(:INT) { a.push(1) } + trap(:TERM) { a.push(2) } + pid = $$ + begin + fork do + sleep 0.5 + Process.kill(:INT, pid) + Process.kill(:TERM, pid) + end + + sleep 1 + a.sort + rescue NotImplementedError + [1, 2] + end +}, '[ruby-dev:44005] [Ruby 1.9 - Bug #4950]' + |