Project

General

Profile

Actions

Bug #14865

closed

Raising exception in c_return event hook causes infinite loop

Added by ktsj (Kazuki Tsujimoto) almost 6 years ago. Updated over 5 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.6.0dev (2018-06-23) [x86_64-linux]
[ruby-dev:50582]

Description

c_returnのイベントフックの中で例外を起こすと無限ループになるケースがあります。
例外発生時にフレームがポップされずスタックに残り続けてしまうのが原因です。

$ cat t.rb
TracePoint.new(:c_return){|tp|
  p tp.method_id
  raise
}.enable{
  tap{ itself }
}
$ ruby t.rb
:itself
:tap
:tap
(snip)
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0