Bug #2460
closedRubySpecでFiberのSpecがおちる
Description
=begin
ruby 1.9.2dev (2009-12-08 trunk 26049)で、FiberのSpecがこけているのですが、
どうやらRubySpec側が、昔ITSに登録されたバグを誤解してSpecが書かれている気がします。
いかがでしょうか?
core/fiber/resume_spec.rb
22 # http://redmine.ruby-lang.org/issues/show/595
23 it "executes the ensure clause" do
24 fib = Fiber.new{
25 begin
26 Fiber.yield :begin
27 ensure
28 :ensure
29 end
30 }
31 fib.resume.should == :ensure
32 end
コメントに書かれている issue の 595 を見ると、Rubyのプロセスが終了するときに
ensureが呼ばれないというものなのですが、これを再現させようとしているのか、
595の内容を間違って記述している気がします。
=end
Updated by takkanm (三村 益隆) about 15 years ago
=begin
このFiberのspecに対し、AsakusaのIRCにて笹田さんよりSpecが間違っているとい返信をいただきました。
Hiro Asariさんが、以下のようなspecに変更していただいてくれました。
core/fiber/resume_spec.rb
22 ruby_bug "redmine #595", "1.9" do
23 it "executes the ensure clause" do
24 fib = Fiber.new{
25 begin
26 exit 0
27 rescue SystemExit
28 ensure
29 :ensure
30 end
31 }
32 fib.resume.should == :ensure
33 end
私の認識だと、issue 595 の内容は、resume 後のFiberのensureがRubyのプロセス終了時に呼ばれないという問題とおもっています。
ですので、このパッチでもissue595の内容をみたせていないと思っているのですが、いかがでしょうか?
=end
Updated by nobu (Nobuyoshi Nakada) about 15 years ago
=begin
なかだです。
At Sat, 19 Dec 2009 15:30:54 +0900,
三村 益隆 wrote in [ruby-dev:39893]:
私の認識だと、issue 595 の内容は、resume 後のFiberのensureが
Rubyのプロセス終了時に呼ばれないという問題とおもっています。
ですので、このパッチでもissue595の内容をみたせていないと思って
いるのですが、いかがでしょうか?
ということだと思います。単独のプロセスでテストするのは無理がある
のではないでしょうか。
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦
=end
Updated by hasari (Hiro Asari) about 15 years ago
=begin
浅里です。
On Dec 19, 2009, at 2:48 AM, Nobuyoshi Nakada wrote:
なかだです。
At Sat, 19 Dec 2009 15:30:54 +0900,
三村 益隆 wrote in [ruby-dev:39893]:私の認識だと、issue 595 の内容は、resume 後のFiberのensureが
Rubyのプロセス終了時に呼ばれないという問題とおもっています。
ですので、このパッチでもissue595の内容をみたせていないと思って
いるのですが、いかがでしょうか?ということだと思います。単独のプロセスでテストするのは無理がある
のではないでしょうか。--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦
「単独では無理」というのはFiberに限った事でしょうか。
それともexit周りのspecは難しい、という事でしょうか。
今回の修正では
http://github.com/rubyspec/rubyspec/blob/master/core/kernel/exit_spec.rb
を参考にしたんですが。
=end
Updated by naruse (Yui NARUSE) over 14 years ago
- Status changed from Open to Assigned
- Assignee set to ko1 (Koichi Sasada)
=begin
=end
Updated by nahi (Hiroshi Nakamura) over 13 years ago
- Target version changed from 1.9.2 to 1.9.3
Updated by mame (Yusuke Endoh) over 13 years ago
「単独では無理」というのはFiberに限った事でしょうか。
それともexit周りのspecは難しい、という事でしょうか。
後者だと思います。
Fiber に限らず、Ruby プロセス終了時の挙動は実際に終了させなければテストでき
ないので。
この件に関しては、実行終了というよりは、「Fiber が途中状態のまま GC されたときに
ensure 節が実行される」という仕様を検査したいわけですが、確実に GC させるには
Ruby プロセスを終了させるくらいしか手がないですかね。
--
Yusuke Endoh mame@tsg.ne.jp
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
- Status changed from Assigned to Closed
元々の RubySpecでFiberのSpecがおちる問題はasariさんがspecを書き換えたことで解決しているので、残課題は595で取り扱うべきだと思います。重複クローズします。
Updated by naruse (Yui NARUSE) over 11 years ago
- Tracker changed from Misc to Bug