From: sheepman Date: 2007-06-02T00:55:55+09:00 Subject: [ruby-dev:30872] segv when reentering into Fiber with callcc こんばんは、sheepman です。 終了した Fiber に callcc で再入すると segv します。 $ cat f.rb Fiber.new do if callcc{|c| $k = c } p 1 else p 3 end end.pass p 2 $k.call $ ruby-1.9 -v f.rb ruby 1.9.0 (2007-06-01 patchlevel 0) [i686-linux] 1 2 3 SEGV recieved in SEGV handler 以下はバックトレースです。 (gdb) bt #0 0x000007e0 in ?? () #1 0x080c042e in th_eval_body (th=0x8133eb0) at ../ruby/vm.c:1631 #2 0x080bb901 in invoke_block (th=0x8133eb0, block=0x8171d30, self=1076562140, argc=0, argv=0x8172010, magic=-83886223) at ../ruby/vm.c:799 #3 0x080bba8d in th_invoke_proc (th=0x8133eb0, proc=0x8171d30, self=1076562140, argc=0, argv=0x8172010) at ../ruby/vm.c:839 #4 0x080c644a in rb_fiber_start () at ../ruby/cont.c:433 #5 0x0805953c in ruby_exec_internal () at ../ruby/eval.c:212 #6 0x08059554 in ruby_exec () at ../ruby/eval.c:227 #7 0x0805958f in ruby_run () at ../ruby/eval.c:246 #8 0x08056dd4 in th_get_ruby_level_cfp (th=0x7e0, cfp=0x0) at ../ruby/main.c:47 #9 0x400dcc1f in __libc_start_main () from /lib/i686/libc.so.6 -- sheepman / TAMURA Takashi sheepman@sheepman.sakura.ne.jp