From: nobu@... Date: 2017-06-16T08:12:34+00:00 Subject: [ruby-dev:50154] [Ruby trunk Bug#13432] set_trace_funcにproc->is_from_method = TRUEのオブジェクトを渡し、SystemStackErrorを発生させるとRubyVMが停止する Issue #13432 has been updated by nobu (Nobuyoshi Nakada). Backport changed from 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN to 2.2: REQUIRED, 2.3: REQUIRED, 2.4: REQUIRED r58349 で修正済み。 ---------------------------------------- Bug #13432: set_trace_funcにproc->is_from_method = TRUEのオブジェクトを渡し、SystemStackErrorを発生させるとRubyVMが停止する https://bugs.ruby-lang.org/issues/13432#change-65396 * Author: masato_hi (Masato Hi) * Status: Open * 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: REQUIRED, 2.4: REQUIRED ---------------------------------------- 以下のコードのように、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/