[#45174] [ruby-trunk - Feature #5959][Assigned] Addrinfo#inspectname — Yui NARUSE <naruse@...>
9 messages
2012/02/02
[#45177] Re: [ruby-trunk - Feature #5959][Assigned] Addrinfo#inspectname
— Tanaka Akira <akr@...>
2012/02/02
2012年2月2日17:16 Yui NARUSE <[email protected]>:
[#45178] Re: [ruby-trunk - Feature #5959][Assigned] Addrinfo#inspectname
— Tanaka Akira <akr@...>
2012/02/02
2012年2月2日18:12 Tanaka Akira <[email protected]>:
[#45179] Re: [ruby-trunk - Feature #5959][Assigned] Addrinfo#inspectname
— "NARUSE, Yui" <naruse@...>
2012/02/02
(2012/02/02 18:33), Tanaka Akira wrote:
[#45192] Re: [ruby-trunk - Feature #5959][Assigned] Addrinfo#inspectname
— Tanaka Akira <akr@...>
2012/02/05
2012年2月2日19:13 NARUSE, Yui <[email protected]>:
[#45183] Plan to 1.9.3 1st patch release — "NARUSE, Yui" <naruse@...>
もう気分は 2.0 なので正直 1.9.3 とかどうでもいいんですけど(ぇー)、
8 messages
2012/02/03
[#45184] Re: Plan to 1.9.3 1st patch release
— KOSAKI Motohiro <kosaki.motohiro@...>
2012/02/03
> = backport 時のレビューの廃止
[ruby-dev:45218] [ruby-trunk - Bug #5993][Open] Thread.new{ Fiber.new { Thread.exit }.resume }.join で例外
From:
Tomoyuki Chikanaga <nagachika00@...>
Date:
2012-02-09 16:59:09 UTC
List:
ruby-dev #45218
Issue #5993 has been reported by Tomoyuki Chikanaga.
----------------------------------------
Bug #5993: Thread.new{ Fiber.new { Thread.exit }.resume }.join で例外
https://bugs.ruby-lang.org/issues/5993
Author: Tomoyuki Chikanaga
Status: Open
Priority: Normal
Assignee: Tomoyuki Chikanaga
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-02-09 trunk 34514) [x86_64-darwin10.8.0]
以下のように Fiber 内で Thread.exit するとメッセージが空の RuntimeError が発生します。
Thread.new{ Fiber.new { Thread.exit }.resume }.join #=> RuntimeError:
rb_fiber_start() で Thread.exit 時の TAG_FATAL での TAG_JUMP を想定していないためだと思います。とりあえず以下のようにすると例外にならなくなります。
あと th->errinfo は空を Qnil としているのに th->thrown_errinfo は 0 (Qfalse)を空であることを示すのに使っているので、その食い違いで thrown_errinfo に Qnil を入れてしまっていた(rb_vm_make_jump_tag_but_local_jump() の結果が Qnil の時)のが原因のようなので、そちらをなんとかすべきかもしれません。全体的に thrown_errinfo も空を意味するために Qnil を使うようにそろえるとか?
--- a/cont.c
+++ b/cont.c
@@ -1152,6 +1152,9 @@ rb_fiber_start(void)
if (state == TAG_RAISE) {
th->thrown_errinfo = th->errinfo;
}
+ else if (state == TAG_FATAL && th->errinfo == INT2FIX(TAG_FATAL)) {
+ /* terminating */
+ }
else {
th->thrown_errinfo =
rb_vm_make_jump_tag_but_local_jump(state, th->errinfo);
--
http://bugs.ruby-lang.org/