Issue #5757 has been updated by Yui NARUSE.

ruby -v changed from - to ruby 2.0.0dev (2011-12-12 trunk 34015) [x86_64-freebsd9.0]

??????ャ?若???????????????????????障?????

> ???????????鴻?????????GVL腴九?????????????ubf_select?????脂?蚊???????????障??select???茯????с???????
> ubf_select???kill(VTALRM) ???鴻??????с????????筝????ubf_select_each?????若?違??????????????????
> ???????????綽?荀???????????茯?茘???с?????

??????????筝???????紊??????<???????醇?с?c??<???????с??????????????
???<????????????????rb_thread_kill ??眼?х∈絎???罩????????冴????????????鴻??????????????障?????


rb_thread_kill ??? rb_thread_wakeup_timer_thread() ?????????????????????????????с????????
????????????? [ruby-dev:44992] ??у???????????c?純????c?????с?????????????????????若????с?腆肴????箴??с???????帥??
r34038 ????潟??????????????障?????
----------------------------------------
Bug #5757: main thread???read???select??у????c??????????^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