From: "naruse (Yui NARUSE)" Date: 2012-11-02T16:23:58+09:00 Subject: [ruby-dev:46359] [ruby-trunk - Bug #6577][Closed] GC中にstack overflowが発生するとSEGVする Issue #6577 has been updated by naruse (Yui NARUSE). Status changed from Feedback to Closed そうですね、よいとおもいます、ありがとうございました。 なお、聞くべき対象はわたしなので feedback じゃなくて assgined であるべきだったかと。 Feedback は開発者出ない報告者か、誰ともなく助けを求めるときのためのものなので。 ---------------------------------------- Bug #6577: GC中にstack overflowが発生するとSEGVする https://bugs.ruby-lang.org/issues/6577#change-32214 Author: naruse (Yui NARUSE) Status: Closed Priority: Normal Assignee: ko1 (Koichi Sasada) Category: Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-06-11 trunk 36035) [x86_64-freebsd9.0] 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 で再帰しないようにするなんて構想も先日語っておられましたが。 -- http://bugs.ruby-lang.org/