[#44925] [Backport93 - Backport #5702][Open] backport r33935 — Yusuke Endoh <mame@...>
19 messages
2011/12/03
[#44929] [Backport93 - Backport #5702] backport r33935
— Tomoyuki Chikanaga <nagachika00@...>
2011/12/05
[#44931] Re: [Backport93 - Backport #5702] backport r33935
— Yusuke Endoh <mame@...>
2011/12/05
GyRCMXNGIyRHJDkhIxsoQgoKGyRCJWwlUyVlITwkIiRqJCwkSCQmJDQkNiQkJF4kOSEjGyhCCgoK
[#44934] Re: [Backport93 - Backport #5702] backport r33935
— "NARUSE, Yui" <naruse@...>
2011/12/05
2011年12月5日12:39 Yusuke Endoh <mame@tsg.ne.jp>:
[#44940] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode. — Tanaka Akira <akr@...>
2011/12/6 <naruse@ruby-lang.org>:
9 messages
2011/12/05
[#44941] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode.
— KOSAKI Motohiro <kosaki.motohiro@...>
2011/12/05
2011年12月5日16:56 Tanaka Akira <akr@fsij.org>:
[#44942] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode.
— KOSAKI Motohiro <kosaki.motohiro@...>
2011/12/05
> おかしいな。gdbmは勝手にcreateフラグを立ててしまうので当該2つの
[#44943] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode.
— KOSAKI Motohiro <kosaki.motohiro@...>
2011/12/05
> def test_s_open_no_create
[#44944] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode.
— Tanaka Akira <akr@...>
2011/12/05
2011年12月6日7:19 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:
[#44946] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode.
— KOSAKI Motohiro <kosaki.motohiro@...>
2011/12/06
>> DBM::VERSIONは仕様が腐っていて 1)本物のdbmとリンクした場合は
[#44947] Re: [ruby-cvs:41134] naruse:r33956 (trunk): Comment out tests which fails with GDBM-DBM compat mode.
— Tanaka Akira <akr@...>
2011/12/06
2011年12月6日12:51 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:
[#44950] [ruby-trunk - Bug #5725][Assigned] Coverage doesn't honor file path encodings — Shyouhei Urabe <shyouhei@...>
6 messages
2011/12/08
[#44951] [ruby-trunk - Bug #5728][Open] SystemExit.new(bool, message) — Akira Tanaka <akr@...>
6 messages
2011/12/08
[#44961] [ruby-trunk - Bug #5731][Open] enum_for を使うと method_missing にブロックが渡されない — Masahiro Tomita <tommy@...>
4 messages
2011/12/09
[#44963] [ruby-trunk - Bug #5738][Open] if false; BEGIN {}; end が syntax error になる — Sho Hashimoto <sho-h@...>
5 messages
2011/12/10
[#44974] githubへの移行 — Shugo Maeda <shugo@...>
前田です。
10 messages
2011/12/12
[#44985] [ruby-trunk - Bug #5757][Open] main threadがreadやselectで待っていると、^C でなかなか死なない — Yui NARUSE <naruse@...>
12 messages
2011/12/13
[#45002] [ruby-trunk - Bug #5768][Assigned] TestRequire#test_race_exceptionで競合するケースがまだある — Yui NARUSE <naruse@...>
8 messages
2011/12/17
[#45021] [ruby-trunk - Bug #5786][Open] LoadError: cannot load such file -- openssl — Kazuhiro NISHIYAMA <redmine@...>
11 messages
2011/12/21
[#45022] [ruby-trunk - Bug #5786] LoadError: cannot load such file -- openssl
— Kazuhiro NISHIYAMA <redmine@...>
2011/12/21
[#45030] [ruby-trunk - Bug #5790][Open] net/http の EOFError と Keep-Alive — Yui NARUSE <naruse@...>
3 messages
2011/12/22
[#45034] Re: [ruby-dev:44974] githubへの移行 — Daehyub Kim <lateau@...>
44Oi44Or44Gn44GZ44CCCuOCiOOBneOCguOBruOBp+OBmeOBjOOAgeWwkeOBl+awl+OBq+OBquOC
9 messages
2011/12/22
[#45035] Re: githubへの移行
— "NARUSE, Yui" <naruse@...>
2011/12/22
2011年12月22日23:55 Daehyub Kim <lateau@gmail.com>:
[#45036] Re: githubへの移行
— Narihiro Nakamura <authornari@...>
2011/12/22
nariです。
[#45038] Re: githubへの移行
— KOSAKI Motohiro <kosaki.motohiro@...>
2011/12/22
> 成瀬さんがおっしゃってるログですが、以下にわりと古めのWikiページがある
[#45039] Re: githubへの移行
— Urabe Shyouhei <shyouhei@...>
2011/12/23
On 2011年12月23日 02:20, KOSAKI Motohiro wrote:
[ruby-dev:44992] [ruby-trunk - Bug #5757] main threadがreadやselectで待っていると、^C でなかなか死なない
From:
Tomoyuki Chikanaga <nagachika00@...>
Date:
2011-12-14 00:45:21 UTC
List:
ruby-dev #44992
Issue #5757 has been updated by Tomoyuki Chikanaga.
Bug #5343 を登録したものです。
ちゃんと試さずに書いてしまいますが、 #5343 は別の Thread からの kill や raise での割り込みの場合の問題だったと記憶していますので、ubf_select() での rb_thread_wakeup_timer_thread() の呼び出しはタイマースレッドで実行する場合は呼ばないようにすることで両方大丈夫にならないでしょうか。
diff --git a/thread_pthread.c b/thread_pthread.c
index afef326..16f7674 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -924,6 +924,8 @@ native_sleep(rb_thread_t *th, struct timeval *timeout_tv)
thread_debug("native_sleep done\n");
}
+static pthread_t timer_thread_id;
+
#ifdef USE_SIGNAL_THREAD_LIST
struct signal_thread_list {
rb_thread_t *th;
@@ -1018,7 +1020,8 @@ ubf_select(void *ptr)
{
rb_thread_t *th = (rb_thread_t *)ptr;
add_signal_thread_list(th);
- rb_thread_wakeup_timer_thread(); /* activate timer thread */
+ if ( pthread_self() != timer_thread_id )
+ rb_thread_wakeup_timer_thread(); /* activate timer thread */
ubf_select_each(th);
}
@@ -1047,7 +1050,6 @@ ping_signal_thread_list(void) {
static int ping_signal_thread_list(void) { return 0; }
#endif /* USE_SIGNAL_THREAD_LIST */
-static pthread_t timer_thread_id;
static int timer_thread_pipe[2] = {-1, -1};
static int timer_thread_pipe_owner_process;
----------------------------------------
Bug #5757: main threadがreadやselectで待っていると、^C でなかなか死なない
http://redmine.ruby-lang.org/issues/5757
Author: Yui NARUSE
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2011-12-12 trunk 34015) [x86_64-freebsd9.0]
FreeBSD 9 にて、 ./ruby と起動して ^C を投げてもなかなか死にません。
./miniruby でも -e'$stdin.read' でも同じです。
仕組みとしては、main thread が read や select で待つ場合、最近は blocking region で
unblock.func に ubf_select を設定するわけですが、この時にシグナルが来ると、
1. どこかのスレッドの sighandler が呼ばれて、rb_thread_wakeup_timer_thread() が呼ばれる
2. タイマースレッドが起きて、thread_timer() -> timer_thread_function() -> rb_threadptr_check_signal() -> rb_threadptr_interrupt() -> (th->unblock.func)(th->unblock.arg) -> ubf_select() -> rb_thread_wakeup_timer_thread() が呼ばれる
3. タイマースレッドが起きて、thread_timer() -> timer_thread_function() -> rb_threadptr_check_signal() -> rb_threadptr_interrupt() -> (th->unblock.func)(th->unblock.arg) -> ubf_select() -> rb_thread_wakeup_timer_thread() が呼ばれる
4. タイマースレッドが起きて、thread_timer() -> timer_thread_function() -> rb_threadptr_check_signal() -> rb_threadptr_interrupt() -> (th->unblock.func)(th->unblock.arg) -> ubf_select() -> rb_thread_wakeup_timer_thread() が呼ばれる
...
対策はいくつかあり得ると思うのですが、例えば、ubf_select() から rb_thread_wakeup_timer_thread() を呼ばないようにするとか
--
http://redmine.ruby-lang.org