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

Issue #7878 has been reported by shyouhei (Shyouhei U.).


Bug #7878: E::Lazy#grep ignores ^C

Author: shyouhei (Shyouhei U.)
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してください。

Issue #7878 has been updated by mame (Yusuke E.).

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


Bug #7878: E::Lazy#grep ignores ^C

Author: shyouhei (Shyouhei U.)
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してください。

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

Author: shyouhei (Shyouhei U.)
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してください。

Issue #7878 has been updated by mame (Yusuke E.).

Assignee changed from mame (Yusuke E.) 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 E. [email protected]

Bug #7878: E::Lazy#grep ignores ^C

Author: shyouhei (Shyouhei U.)
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してください。

(2013/02/19 21:20), mame (Yusuke E.) 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 送り。

よろしくお願いします。

Issue #7878 has been updated by ko1 (Koichi Sasada).

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

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

mameさん
backport してもいいでしょうか。

Bug #7878: E::Lazy#grep ignores ^C

Author: shyouhei (Shyouhei U.)
Status: Assigned
Priority: Normal
Assignee: mame (Yusuke E.)
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してください。

Issue #7878 has been updated by mame (Yusuke E.).

ko1 (Koichi Sasada) wrote:

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

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


Yusuke E. [email protected]

Bug #7878: E::Lazy#grep ignores ^C

Author: shyouhei (Shyouhei U.)
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してください。

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

Author: shyouhei (Shyouhei U.)
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してください。