Project

General

Profile

Actions

Bug #5083

closed

cref/cbase取得時にSEGV

Added by ktsj (Kazuki Tsujimoto) over 12 years ago. Updated over 12 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 1.9.4dev (2011-07-23 trunk 32632) [x86_64-linux]
Backport:
[ruby-dev:44208]

Description

=begin
辻本です。

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

$ ./ruby -e 'Thread.new(&Module.method(:nesting)).join'
$ ./ruby -e 'Thread.new(:to_s, &Module.method(:undef_method)).join'

それぞれrb_vm_cref/rb_vm_cbaseの中でrb_vm_get_ruby_level_next_cfpが0を返すケースに
対応できていないのが原因です。

類似の事例として[ruby-dev:34128]があるのですが、その際の対策にあわせて
Rubyレベルのcfpが存在しない場合はRuntimeErrorとする変更を取り込んでしまいたいと思います。
(パッチを添付します)

懸念点として、上記のコードは1.8系の場合はエラーが出ることなく動くので
このパッチを適用することで非互換が生じることになりますが、
すでに

$ ruby1.8 -e 'Thread.new("$", &Object.method(:eval)).join' # => No error
$ ruby1.9 -e 'Thread.new("$
", &Object.method(:eval)).join' # => Can't eval on top of Fiber or Thread (RuntimeError)

という状況なので問題ないと思いますがどうでしょうか。
=end


Files

fix-to-check-cfp.patch (1017 Bytes) fix-to-check-cfp.patch ktsj (Kazuki Tsujimoto), 07/23/2011 10:03 AM
Actions #1

Updated by Anonymous over 12 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r32768.
Kazuki, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


Updated by ktsj (Kazuki Tsujimoto) over 12 years ago

trunkと1.9.3にコミットしました。

Actions

Also available in: Atom PDF

Like0
Like0Like0