Project

General

Profile

Actions

Bug #13425

closed

Tracer.onにした状態でSystemStackErrorを発生させるとSegmentation fault

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

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]
[ruby-core:80662]

Description

Ruby2.4.0, 2.4.1の環境にて以下のコードのように SystemStackError: stack level too deep が発生するコードをTracerを有効化した状態で実行するとSegmentation faultや無限ループが発生する。

以下のコードは常にSegmentation faultを発生させる。

require 'tracer'

Tracer.on

class HogeError < StandardError
  def to_s
    message
  end
end

HogeError.new.to_s #=> Segmentation fault

以下のコードはフリーズ(おそらく何も出力しない無限ループ)する。
また、pry (0.10.4), pry-byebug (3.4.2)が入った環境でpry上で以下のコードを実行すると #0: を出力し続ける無限ループが発生する(添付画像参照)。

require 'tracer'

Tracer.on

def hoge
  hoge
end

hoge #=> freeze or infinite loop

Ruby 2.3.0及び2.3.1では発生していない。

実行環境

macOS 10.12, Debian 8.6


Files

Untitled.png (441 KB) Untitled.png pry上での実行結果 masato_hi (Masato Hi), 04/12/2017 05:27 AM

Related issues 1 (0 open1 closed)

Has duplicate Ruby master - Bug #13432: set_trace_funcにproc->is_from_method = TRUEのオブジェクトを渡し、SystemStackErrorを発生させるとRubyVMが停止するClosedActions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0