Project

General

Profile

Actions

Bug #2460

closed

RubySpecでFiberのSpecがおちる

Added by takkanm (三村 益隆) almost 13 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
Backport:
[ruby-dev:39855]

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


Related issues 1 (1 open0 closed)

Has duplicate Ruby master - Bug #595: Fiber ignores ensure clauseAssignedioquatix (Samuel Williams)Actions
Actions #1

Updated by takkanm (三村 益隆) almost 13 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

Actions #2

Updated by nobu (Nobuyoshi Nakada) almost 13 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

Actions #3

Updated by hasari (Hiro Asari) almost 13 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

Actions #4

Updated by naruse (Yui NARUSE) about 12 years ago

  • Status changed from Open to Assigned
  • Assignee set to ko1 (Koichi Sasada)

=begin

=end

Updated by nahi (Hiroshi Nakamura) over 11 years ago

  • Target version changed from 1.9.2 to 1.9.3

Updated by mame (Yusuke Endoh) over 11 years ago

「単独では無理」というのはFiberに限った事でしょうか。
それともexit周りのspecは難しい、という事でしょうか。

後者だと思います。
Fiber に限らず、Ruby プロセス終了時の挙動は実際に終了させなければテストでき
ないので。

この件に関しては、実行終了というよりは、「Fiber が途中状態のまま GC されたときに
ensure 節が実行される」という仕様を検査したいわけですが、確実に GC させるには
Ruby プロセスを終了させるくらいしか手がないですかね。

--
Yusuke Endoh

Updated by kosaki (Motohiro KOSAKI) over 11 years ago

  • Status changed from Assigned to Closed

元々の RubySpecでFiberのSpecがおちる問題はasariさんがspecを書き換えたことで解決しているので、残課題は595で取り扱うべきだと思います。重複クローズします。

Actions #8

Updated by naruse (Yui NARUSE) over 9 years ago

  • Tracker changed from Misc to Bug
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0