Project

General

Profile

Actions

Bug #6577

closed

GC中にstack overflowが発生するとSEGVする

Added by naruse (Yui NARUSE) almost 12 years ago. Updated over 11 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 2.0.0dev (2012-06-11 trunk 36035) [x86_64-freebsd9.0]
Backport:
[ruby-dev:45721]

Description

GC中にstack overflowが発生すると、例外作成時にrb_new_objするので[BUG]ります。

原因
(1) caller のテストで Fiber を利用するようにした
(2) caller 実行中に GC が発生
(3) GC 中にマシンスタックオーバーフロー(SEGV)が発生
(4) スタックオーバーフローエラーを作成
(5) スタックオーバーフローエラーを作るときに object allocation している
(6) -> [BUG]

対処法:
スタックオーバーフローエラーを投げるときはオブジェクト作らないようにする
対症療法:
caller のテストで Fiber を使わないようにする
対症療法その2:
callerのテストで GC.disable

nariさんがGC で再帰しないようにするなんて構想も先日語っておられましたが。

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0