[#47562] [Backport 200 - Backport #8716][Open] segmation fault 正規表現で大量のグループを利用時 — "taka-yoshi (taka-yoshi taka)" <smokeonthewater222@...>

15 messages 2013/08/01

[#47569] [ruby-trunk - Feature #8726][Open] Class#source_location — "takiuchi (Genki Takiuchi)" <genki@...21g.com>

14 messages 2013/08/03

[#47663] Re: [ruby-core:56878] [ruby-trunk - misc #8835][Open] Introducing a semantic versioning scheme and branching policy — "Akinori MUSHA" <knu@...>

At Fri, 30 Aug 2013 21:49:34 +0900,

6 messages 2013/08/30

[ruby-dev:47574] Re: [ruby-trunk - Feature #8726][Open] Class#source_location

From: KOSAKI Motohiro <kosaki.motohiro@...>
Date: 2013-08-03 20:56:49 UTC
List: ruby-dev #47574
> Classオブジェクトが生成された場所を返す Class#source_location メソッドの実装を希望いたします。
>
> これによって解決される問題の例としては、Timeout::timeout が無名の例外クラスオブジェクトを raise した
> 場合に、どこで仕掛けられた timeout なのか、発生場所を特定できるようになります。
> このようなケースでは、例外オブジェクトが保有している backtrace はtimeoutが発生した時点での
> プログラム実行位置を起点としており、Timeout::timeout(...) を仕掛けた場所の情報は失われています。

言ってることが今ひとつ理解できません。

test.rb
ーーーーーーーーーー
1: require "timeout"
2:
3: def foo
4:   sleep 10
5: end
6:
7: Timeout.timeout(1) {
8:   foo
9: }

というコードの結果は

% ./ruby-trunk ../test.rb
../test.rb:4:in `sleep': execution expired (Timeout::Error)
from ../test.rb:4:in `foo'
from ../test.rb:8:in `block in <main>'
from ../test.rb:7:in `<main>'

であり、タイムアウトが発生した時点でのプログラム実行位置(foo内の行番号4)と
Timeout仕掛けた場所(行番号7から9のブロック)は両方共わかるように見えます。

なるせさん、わたし、あのバックトレースの整形処理がイマイチ理解できんのだが、
あれはどういう処理を意図してるの。

In This Thread