[#43467] [Q] thread->interrupt_flag が適切に排他制御されていないように見える — KOSAKI Motohiro <kosaki.motohiro@...>

kosakiです

15 messages 2011/05/08
[#43482] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — SASADA Koichi <ko1@...> 2011/05/08

 ささだです.

[#43486] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — KOSAKI Motohiro <kosaki.motohiro@...> 2011/05/09

>  ささだです.

[#43487] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — SASADA Koichi <ko1@...> 2011/05/09

 ささだです.

[#43488] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — KOSAKI Motohiro <kosaki.motohiro@...> 2011/05/09

>  ささだです.

[#43489] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — KOSAKI Motohiro <kosaki.motohiro@...> 2011/05/09

自己解決しました

[#43500] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — SASADA Koichi <ko1@...> 2011/05/09

 ささだです.

[#43501] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える — KOSAKI Motohiro <kosaki.motohiro@...> 2011/05/09

>> ということは危ないのは RUBY_VM_SET_INTERRUPT() がロストしたときに、タイムアウトなしの

[#43468] Re: [ruby-changes:19438] Ruby:r31478 (trunk): * test/date/*.rb: use skip /w messages. — KOSAKI Motohiro <kosaki.motohiro@...>

2011/5/8 tadf <ko1@atdot.net>:

8 messages 2011/05/08

[#43476] [Ruby 1.9 - Feature #4653][Open] [PATCH 1/1] new method Enumerable#rude_map — Shyouhei Urabe <shyouhei@...>

16 messages 2011/05/08

[#43493] [Ruby 1.9 - Feature #4657][Open] add option to hide skip messages on unit/test — Shota Fukumori <sorah@...>

11 messages 2011/05/09

[#43502] draft schedule of Ruby 1.9.3 — "Yuki Sonoda (Yugui)" <yugui@...>

-----BEGIN PGP SIGNED MESSAGE-----

23 messages 2011/05/09
[#43505] Re: draft schedule of Ruby 1.9.3 — "U.Nakamura" <usa@...> 2011/05/10

Hello,

[#43513] Re: draft schedule of Ruby 1.9.3 — KOSAKI Motohiro <kosaki.motohiro@...> 2011/05/10

(ruby-coreはずしました)

[#43587] [Ruby 1.9 - Feature #4788][Open] resolv.rb refactoring — Makoto Kishimoto <redmine@...>

15 messages 2011/05/27

[ruby-dev:43535] Re: draft schedule of Ruby 1.9.3

From: KOSAKI Motohiro <kosaki.motohiro@...>
Date: 2011-05-12 12:10:46 UTC
List: ruby-dev #43535
2011年5月12日15:29 U.Nakamura <usa@garbagecollect.jp>:
> こんにちは、なかむら(う)です。
>
> In message "[ruby-dev:43513] Re: draft schedule of Ruby 1.9.3"
>    on May.10,2011 19:07:57, <kosaki.motohiro@gmail.com> wrote:
>>  10) Failure:
>> test_wait_for_invalid_fd(TestWaitForSingleFD)
>> [c:/ruby/trunk/test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb:27
>> ]:
>> Errno::EBADF expected but nothing was raised.
>>
>> これは、僕が最近いれたEricの io/wait テストなんですが、Windowsでの正しい動作が不明なので usa さんの見解が欲しい。
>
> えーと、テストを見ると、closeされたfdに対してwaitしたら例外が
> 起きてほしい?
>
> そもそもselect(2)はcloseされたfdを渡されてもEBADFにはなんない
> ですよね? 違いましたっけ?

Linux および POSIX準拠 なシステムはEBADFになります。補足する過去に議論になったのは

1) そもそも別スレッドが同時にopenしたら、もう無効fd じゃなくなってしまうのだから拡張ライブラリはEBADFを仮定するべきではない
2) Linux特有の制限として、先にselectして別スレッドがcloseしたときにselectは起床しない
     (なぜならリファレンスカウント内部的に一個上がってしまってるから検知できぬ)

で、これは非公開API をむりやりテストしてるテストケースなので、poll と select で差異が出ないことを確認することが主眼になってるんです。
そのことの是非はさておくとして、基本的にテストはよほどアレじゃないかぎりマージしてやってもよかろうと思うのでマージしちゃいました。(test/-ext-
なんてアレゲテストの巣窟なんから今更細かいことを言ってもねぇ・・とかとか)


> そういう仕様がお望みならselect_single()あたりをそういう挙動に
> 変えないといかんのではないかと思いますけど...
>
> なお、poll(2)版も自前でPOLLNVALをEBADFに変換した上でRuby例外
> にしてるようですが、どうせ例外投げるならIOErrorの方がいいんじ
> ゃないかと私は思います。

という仕様にするとしても、IO.selectのルートを考えると
プラットフォームがEBADFを返したところをキャッチしてIOErrorに変換することになると思います。
もしくは、Windowsだけ例外上がらないことを仕様にして、このテストをスキップさせるか。


# ところで、なんで Windows の select に pipe わたして動いているのか理解出来ないので
# 今度教えてください

In This Thread