Project

General

Profile

Bug #13432

Updated by masato_hi (Masato Hi) almost 7 years ago

以下のコードのように、Method#to_procで作成したProcオブジェクトをset_trace_funcに設定しSystemStackErrorを発生させるとRubyVMが停止する。 

 ``` 
 def trace_method(event, file, line, id, binding, klass); end 

 set_trace_func method(:trace_method).to_proc 

 def stack_overflow infinite_loop 
   stack_overflow infinite_loop 
 end 

 stack_overflow infinite_loop #=> RubyVM stops 
 ``` 

 以下のコードではこの問題は発生しない。 

 ``` 
 set_trace_func lambda {|event, file, line, id, binding, klass| 
 } 

 def stack_overflow infinite_loop 
   stack_overflow infinite_loop 
 end 

 stack_overflow infinite_loop #=> stack level too deep (SystemStackError) 
 ``` 

Back