[#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 <[email protected]>:

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:43464] [Ruby 1.9 - Bug #4648][Open] lambda上のclass定義からのreturnでSEGV

From: Kazuki Tsujimoto <kazuki@...>
Date: 2011-05-05 05:02:25 UTC
List: ruby-dev #43464
Issue #4648 has been reported by Kazuki Tsujimoto.

----------------------------------------
Bug #4648: lambda上のclass定義からのreturnでSEGV
http://redmine.ruby-lang.org/issues/4648

Author: Kazuki Tsujimoto
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 1.9.3dev (2011-05-05 trunk 31435) [x86_64-linux]


=begin
辻本といいます。

以下のコードでSEGVします。

 $ ./miniruby -e '->{class A; return; end}.()'
 -e:1: [BUG] Segmentation fault

returnの処理(vm_throw)は以下のようになっていますが:

(1) return先の走査中にclass定義用のフレームにあたったらその外側のフレームのlfpを利用して走査処理を続ける。(Bug #1018)
(2) return先の走査中にLAMBDAフレームにあたったら、有効なreturn(lambdaの内側からのreturn)かどうかを調べるために
    return時点でのcfp->dfpをlfpまで辿っていく。

問題のコードでは、1.によりlfpが書き換えられたことで2.のdfpを辿る処理が終わらないため
SEGVするという流れになります。

1.の処理を行なった時点で有効なreturnであることの確認は出来ているので、
その場合は2.を行わずそのままLAMBDAフレームからreturnさせることで回避できます。
パッチを添付します。
=end



-- 
http://redmine.ruby-lang.org

In This Thread

Prev Next