Project

General

Profile

Actions

Bug #13432

closed

set_trace_funcにproc->is_from_method = TRUEのオブジェクトを渡し、SystemStackErrorを発生させるとRubyVMが停止する

Added by masato_hi (Masato Hi) almost 7 years ago. Updated over 6 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.0dev (2017-04-13 trunk 58340) [x86_64-darwin16]
[ruby-dev:<unknown>]

Description

以下のコードのように、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
  stack_overflow
end

stack_overflow #=> RubyVM stops

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

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

def stack_overflow
  stack_overflow
end

stack_overflow #=> stack level too deep (SystemStackError)

Related issues 1 (0 open1 closed)

Is duplicate of Ruby master - Bug #13425: Tracer.onにした状態でSystemStackErrorを発生させるとSegmentation faultClosedActions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0