[#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:43482] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える

From: SASADA Koichi <ko1@...>
Date: 2011-05-08 21:19:08 UTC
List: ruby-dev #43482
 ささだです.

(2011/05/08 20:23), KOSAKI Motohiro wrote:
> Ruby VM internal
> に詳しい方々に質問です。現在、thread->interrupt_flagはどうやって排他制御されるデザインになっていますでしょうか?

 詳しいかどうかは疑問ですが,th->interrupt_flag を作りました.

 基本的に,th->interrupt_flag を弄る人は GVL 取ってるので,排他制御出来
てると思ってたんだけど,まずい?

 GVL 取ってないのは timer_thread だけど,timer_thread が設定する時
に,or を設定しようとして,そこでまずいことが起こる可能性があるのか
な.timer_thread_lock ってのも,昔は取っていなかったような(覚えていない).

 timer_thread の flag は,実は lost してもあんまり問題ない(ちょっとス
ケジューリングが遅れるだけ)ってんで現在の仕様にしている(ロックを取らな
い)のですが,他が設定したものを reset してしまう可能性がある(具体的に
は signal 回りとバッティングする),といのはまずいかもしれませんね.どう
しよ.

 (1) 落としてもまぁ巡り巡って何とかなる系と,(2) 落としちゃいけない系を
分けますかねえ.

(1)
#define RUBY_VM_SET_TIMER_INTERRUPT(th) ((th)->interrupt_flag |= 0x01)
#define RUBY_VM_SET_FINALIZER_INTERRUPT(th) ((th)->interrupt_flag |= 0x04)

(2)
#define RUBY_VM_SET_INTERRUPT(th) ((th)->interrupt_flag |= 0x02)



-- 
// SASADA Koichi at atdot dot net

In This Thread