From: nagachika00@... Date: 2017-07-09T19:49:46+00:00 Subject: [ruby-dev:50168] [Ruby trunk Bug#13432] set_trace_funcにproc->is_from_method = TRUEのオブジェクトを渡し、SystemStackErrorを発生させるとRubyVMが停止する Issue #13432 has been updated by nagachika (Tomoyuki Chikanaga). Backport changed from 2.2: REQUIRED, 2.3: DONE, 2.4: REQUIRED to 2.2: REQUIRED, 2.3: DONE, 2.4: DONE ruby_2_4 r59297 merged revision(s) 58334,58346,58349. ---------------------------------------- Bug #13432: set_trace_funcにproc->is_from_method = TRUEのオブジェクトを渡し、SystemStackErrorを発生させるとRubyVMが停止する https://bugs.ruby-lang.org/issues/13432#change-65706 * Author: masato_hi (Masato Hi) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0dev (2017-04-13 trunk 58340) [x86_64-darwin16] * Backport: 2.2: REQUIRED, 2.3: DONE, 2.4: DONE ---------------------------------------- 以下のコードのように、Method#to_procで作成したProcオブジェクトをset_trace_funcに設定しSystemStackErrorを発生させるとRubyVMが停止する。 ```ruby def trace_method(event, file, line, id, binding, klass); end set_trace_func method(:trace_method).to_proc def stack_overflow stack_overflow end stack_overflow #=> RubyVM stops ``` 以下のコードではこの問題は発生しない。 ```ruby set_trace_func lambda {|event, file, line, id, binding, klass| } def stack_overflow stack_overflow end stack_overflow #=> stack level too deep (SystemStackError) ``` -- https://bugs.ruby-lang.org/