[#46908] [ruby-trunk - Bug #7774][Assigned] IFUNC上のbinding呼び出しでSEGV — "ktsj (Kazuki Tsujimoto)" <kazuki@...>
16 messages
2013/02/03
[#46921] Re: [ruby-dev:46908] [ruby-trunk - Bug #7774][Assigned] IFUNC上のbinding呼び出しでSEGV
— SASADA Koichi <ko1@...>
2013/02/05
> Issue #7774 has been reported by ktsj (Kazuki Tsujimoto).
[#46960] Re: [ruby-trunk - Bug #7774][Assigned] IFUNC上のbinding呼び出しでSEGV
— Kazuki Tsujimoto <kazuki@...>
2013/02/09
辻本です。
[#46929] Re: [ruby-changes:27041] usa:r39093 (ruby_1_9_3): merge revision(s) 33210,33212: [Backport #5278] — Kouhei Sutou <kou@...>
須藤です。
4 messages
2013/02/06
[#46930] Re: [ruby-changes:27041] usa:r39093 (ruby_1_9_3): merge revision(s) 33210,33212: [Backport #5278]
— "U.Nakamura" <usa@...>
2013/02/06
こんにちは、なかむら(う)です。
[#46933] Re: [ruby-cvs:46289] zzak:r39120 (trunk): * doc/security.rb: Translate japanese kanji to english — "Martin J. Dürst" <duerst@...>
Hello Zachary,
3 messages
2013/02/07
[#46990] [ruby-trunk - Bug #7101] 拡張ライブラリの質問 — "mame (Yusuke Endoh)" <mame@...>
1 message
2013/02/15
[#47075] [ruby-trunk - Bug #7924][Open] r39232 以降 net/http で正しく reponse を取得出来ないケースがある — "hsbt (Hiroshi SHIBATA)" <shibata.hiroshi@...>
15 messages
2013/02/23
[#47088] Test on NetBSD/amd64 6.0_STABLE — Takahiro Kambe <taca@...>
こんにちは。
3 messages
2013/02/24
[ruby-dev:46960] Re: [ruby-trunk - Bug #7774][Assigned] IFUNC上のbinding呼び出しでSEGV
From:
Kazuki Tsujimoto <kazuki@...>
Date:
2013-02-09 03:12:39 UTC
List:
ruby-dev #46960
辻本です。
Subject: [ruby-dev:46921] Re: [ruby-dev:46908] [ruby-trunk - Bug#7774][Assigned] IFUNC上のbinding呼び出しでSEGV
From: SASADA Koichi <ko1@atdot.net>
Date: Tue, 5 Feb 2013 15:15:30 +0900
> ご報告,ありがとうございました.多分,治ったんじゃないかと思います.
たびたびすみません。この修正ですが、下記の変更は意図されたものでしょうか。
* r39067より前では、+メソッド/injectメソッドで例外が起きた場合は両方ともメソッド起動時のコンテキスト(例ではmain)のbindingが返ってきていた。
* r39067以降は、injectメソッドで例外が起きた場合の動きが変更されレシーバのbindingが返ってくるようになった。(+メソッドは変更なし)
個人的にはこれまでの挙動のほうが便利でした。
def m1(arg)
arg + nil
rescue
end
def m2(arg)
arg.inject(:+)
rescue
end
# TracePoint
tp = TracePoint.new(:raise) do |tp|
$b = tp.binding
end
tp.enable do
m1(0)
p A: eval('self', $b)
p B: eval('arg rescue nil', $b)
m2([0, nil])
p C: eval('self', $b)
p D: eval('arg rescue nil', $b)
end
# set_trace_func
set_trace_func ->(event, file, line, id, binding, klass) do
if event == 'raise'
$b = binding
end
end
m1(0)
p E: eval('self', $b)
p F: eval('arg rescue nil', $b)
m2([0, nil])
p G: eval('self', $b)
p H: eval('arg rescue nil', $b)
# r39066
# {:A=>main}
# {:B=>0}
# {:C=>main}
# {:D=>[0, nil]}
# {:E=>main}
# {:F=>0}
# {:G=>main}
# {:H=>[0, nil]}
# r39067
# {:A=>main}
# {:B=>0}
# {:C=>[0, nil]}
# {:D=>nil}
# {:E=>main}
# {:F=>0}
# {:G=>[0, nil]}
# {:H=>nil}
--
Kazuki Tsujimoto