Actions
Bug #10689
closed`unexpected break' occurs when TracePoint#binding is called
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0dev (2015-01-02 trunk 49102) [x86_64-linux]
Description
以下のコードでunexpected breakになります。
class Bug
include Enumerable
def each
[0].each do
yield
end
end
end
TracePoint.trace(:c_return) do |tp|
tp.binding
end
Bug.new.all? { false }
all?中のrb_iter_breakによってth->errinfoがセットされた後に、
TracePoint#binding呼び出しによってcfpのepがヒープを指すようになってしまうのが原因です。
とりあえずTracePoint呼び出し後にth->errinfoのepを書き換えるようにしてみたパッチを添付します。
Files
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0