Forum: Ruby-dev [ruby-trunk - Bug #7878][Open] E::Lazy#grep ignores ^C

Posted by shyouhei (Shyouhei Urabe) (Guest)
on 2013-02-18 15:40
(Received via mailing list)
Issue #7878 has been reported by shyouhei (Shyouhei Urabe).

----------------------------------------
Bug #7878: E::Lazy#grep ignores ^C
https://bugs.ruby-lang.org/issues/7878

Author: shyouhei (Shyouhei Urabe)
Status: Open
Priority: Normal
Assignee:
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-02-08 trunk 39161) [x86_64-linux]


このタイミングでバグかよとお思いでしょうが見つけちまったもんはしょうがない、

[0].lazy.cycle.grep(1).first

が^Cに反応しません。どこかでRUBY_VM_CHECK_INTSしてください。
Posted by mame (Yusuke Endoh) (Guest)
on 2013-02-18 17:40
(Received via mailing list)
Issue #7878 has been updated by mame (Yusuke Endoh).

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


----------------------------------------
Bug #7878: E::Lazy#grep ignores ^C
https://bugs.ruby-lang.org/issues/7878#change-36561

Author: shyouhei (Shyouhei Urabe)
Status: Assigned
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-02-08 trunk 39161) [x86_64-linux]


このタイミングでバグかよとお思いでしょうが見つけちまったもんはしょうがない、

[0].lazy.cycle.grep(1).first

が^Cに反応しません。どこかでRUBY_VM_CHECK_INTSしてください。
Posted by ko1 (Koichi Sasada) (Guest)
on 2013-02-19 00:22
(Received via mailing list)
Issue #7878 has been updated by ko1 (Koichi Sasada).


なぜ私が、と思ったんですが、遠藤さんいい読みですね。
これは、

  c_method_foo(){
    while(1){ rb_funcall(c_method_bar); }
  }

のように、foo, bar が両方とも C メソッドで、foo が bar を無限に呼ぶ、という段階で CHECK_INTS 
が入る余地がありませんでした。これは、ちょっと不味いバグなので直します。ううん、このタイミングでこれか。


----------------------------------------
Bug #7878: E::Lazy#grep ignores ^C
https://bugs.ruby-lang.org/issues/7878#change-36573

Author: shyouhei (Shyouhei Urabe)
Status: Assigned
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-02-08 trunk 39161) [x86_64-linux]


このタイミングでバグかよとお思いでしょうが見つけちまったもんはしょうがない、

[0].lazy.cycle.grep(1).first

が^Cに反応しません。どこかでRUBY_VM_CHECK_INTSしてください。
Posted by ko1 (Koichi Sasada) (Guest)
on 2013-02-19 00:54
(Received via mailing list)
Issue #7878 has been updated by ko1 (Koichi Sasada).

Status changed from Closed to Assigned
Assignee changed from ko1 (Koichi Sasada) to mame (Yusuke Endoh)

r39308 で取り急ぎ対応しました。

mameさん
backport してもいいでしょうか。
----------------------------------------
Bug #7878: E::Lazy#grep ignores ^C
https://bugs.ruby-lang.org/issues/7878#change-36578

Author: shyouhei (Shyouhei Urabe)
Status: Assigned
Priority: Normal
Assignee: mame (Yusuke Endoh)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-02-08 trunk 39161) [x86_64-linux]


このタイミングでバグかよとお思いでしょうが見つけちまったもんはしょうがない、

[0].lazy.cycle.grep(1).first

が^Cに反応しません。どこかでRUBY_VM_CHECK_INTSしてください。
Posted by mame (Yusuke Endoh) (Guest)
on 2013-02-19 13:21
(Received via mailing list)
Issue #7878 has been updated by mame (Yusuke Endoh).

Assignee changed from mame (Yusuke Endoh) to ko1 (Koichi Sasada)

ko1 (Koichi Sasada) wrote:
> なぜ私が、と思ったんですが、遠藤さんいい読みですね。

RUBY_VM_CHECK_INTS なんだから笹田さんでしょう。


ko1 (Koichi Sasada) wrote:
> r39308 で取り急ぎ対応しました。
>
> mameさん
> backport してもいいでしょうか。

RUBY_VM_CHECK_INTS したらまずいところで RUBY_VM_CHECK_INTS 
してしまう副作用がないかが大変気になる(具体的に心当たりがあるわけではない)のですが、大丈夫ですかね? 自信があるなら OK です。

--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Bug #7878: E::Lazy#grep ignores ^C
https://bugs.ruby-lang.org/issues/7878#change-36610

Author: shyouhei (Shyouhei Urabe)
Status: Assigned
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-02-08 trunk 39161) [x86_64-linux]


このタイミングでバグかよとお思いでしょうが見つけちまったもんはしょうがない、

[0].lazy.cycle.grep(1).first

が^Cに反応しません。どこかでRUBY_VM_CHECK_INTSしてください。
Posted by SASADA Koichi (Guest)
on 2013-02-19 20:15
(Received via mailing list)
(2013/02/19 21:20), mame (Yusuke Endoh) wrote:
>> なぜ私が、と思ったんですが、遠藤さんいい読みですね。
>
> RUBY_VM_CHECK_INTS なんだから笹田さんでしょう。

 てっきり、Lazy cycle 内でなんか凄いことをやっているのかと思っておりま
した。enum.c のほうに変更入れるなら私じゃないだろう、と。

> ko1 (Koichi Sasada) wrote:
>> r39308 で取り急ぎ対応しました。
>>
>> mameさん
>> backport してもいいでしょうか。
>
> RUBY_VM_CHECK_INTS したらまずいところで RUBY_VM_CHECK_INTS 
してしまう副作用がないかが大変気になる(具体的に心当たりがあるわけではない)のですが、大丈夫ですかね? 自信があるなら OK です。

 これに関して、実は 1.9.3 に戻したというのが実情です RUBY_VM_CHECK_INTS
を外して綺麗になって速くなるかな、と思ったんですが、ちょっとこの挙動(C
method の繰り返しの中で rb_funcall している)を思いつかなかったので、デ
グレ対応と言えるかと思います。というわけで、自信があります。

 本当は、もうちょっと綺麗になりそうだな、という手段を思いついたのです
が、怖いので 1.9.3 相当に戻す、という対応になっております。具体的には、
vm_call0_body() の冒頭、 th->passed_block をクリアした後に CHECK_INTS す
ればよい、はず。ただし、影響が読めないので、2.1 送り。

 よろしくお願いします。
Posted by mame (Yusuke Endoh) (Guest)
on 2013-02-20 08:15
(Received via mailing list)
Issue #7878 has been updated by mame (Yusuke Endoh).


ko1 (Koichi Sasada) wrote:
>   これに関して、実は 1.9.3 に戻したというのが実情です RUBY_VM_CHECK_INTS
>  を外して綺麗になって速くなるかな、と思ったんですが、ちょっとこの挙動(C
>  method の繰り返しの中で rb_funcall している)を思いつかなかったので、デ
>  グレ対応と言えるかと思います。というわけで、自信があります。

なるほど、とても安心できる説明ありがとうございます。
バックポートお願いします。

--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Bug #7878: E::Lazy#grep ignores ^C
https://bugs.ruby-lang.org/issues/7878#change-36657

Author: shyouhei (Shyouhei Urabe)
Status: Assigned
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-02-08 trunk 39161) [x86_64-linux]


このタイミングでバグかよとお思いでしょうが見つけちまったもんはしょうがない、

[0].lazy.cycle.grep(1).first

が^Cに反応しません。どこかでRUBY_VM_CHECK_INTSしてください。
Posted by ko1 (Koichi Sasada) (Guest)
on 2013-02-24 00:14
(Received via mailing list)
Issue #7878 has been updated by ko1 (Koichi Sasada).

Status changed from Assigned to Closed

merged at r39332.

----------------------------------------
Bug #7878: E::Lazy#grep ignores ^C
https://bugs.ruby-lang.org/issues/7878#change-36848

Author: shyouhei (Shyouhei Urabe)
Status: Closed
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-02-08 trunk 39161) [x86_64-linux]


このタイミングでバグかよとお思いでしょうが見つけちまったもんはしょうがない、

[0].lazy.cycle.grep(1).first

が^Cに反応しません。どこかでRUBY_VM_CHECK_INTSしてください。
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.