From: Tadashi Saito Date: 2007-06-07T17:49:35+09:00 Subject: [ruby-dev:30918] segv with callcc like 斎藤と申します。こんばんは。 ふと思い立って、以前akrさんが投げられたcallccでcoreを吐くテストを現状の 実装でも行ってみました。結果、[ruby-dev:24291]のみが現在でもcoreを吐く ようです。 # [ruby-dev:30917]での前振りは大きすぎたみたいです、すみません。 $ cat 24291.rb # "send" replaced with "funcall" arr = (1..100).map {|i| i.to_s } class << arr[50]; self; end.funcall(:define_method, :<=>) {|v| if not defined? $result callcc {|k| $k = k } else $result.clear; $result.compact! end 1 } $result = arr.sort_by {|i| i } $k.call $ ruby-trunk 24291.rb 24291.rb:11: -- stack frame ------------ 0000 (0x402dc008): 00000000 0001 (0x402dc00c): 00000004 0002 (0x402dc010): 00000001 0003 (0x402dc014): 4037ed18 0004 (0x402dc018): 00000004 0005 (0x402dc01c): 4037dc38 0006 (0x402dc020): 4037ed18 0007 (0x402dc024): 00000004 0008 (0x402dc028): 4035bf75 <- lfp <- dfp -- control frame ---------- c:0004 p:---- s:0009 b:0009 l:000008 d:000008 CFUNC :sort_by c:0003 p:0039 s:0006 b:0006 l:0x22d0 d:0x22d0 TOP 24291.rb:11 c:0002 p:---- s:0003 b:0003 l:000002 d:000002 FINISH :(null) c:0001 p:---- s:0001 b:-001 l:000000 d:000000 ------ --------------------------- DBG> : "24291.rb:11:in `
'" -- backtrace of native function call (Use addr2line) -- 0x400e7a50 0x40042366 0x400af1df 0xffffe420 0x4003fb19 0x400c8f4d 0x4003fc3f 0x400e60ae 0x400e4d3d 0x400e5a69 0x400e5e6a 0x400e7c4b 0x40048901 0x40048934 0x400489a1 0x804874e 0x401bb974 0x8048661 ------------------------------------------------------- [BUG] Segmentation fault ruby 1.9.0 (2007-06-07) [i686-linux] アボートしました (core dumped) ただし、以下の一連のテストは正常に動作した事も合わせて報告させてもらい ます。 (無限ループするものは、念のため10秒以上待ってチェックしました) [ruby-dev:25226] [ruby-dev:25003] [ruby-dev:24738] [ruby-dev:24737] [ruby-dev:24735] [ruby-dev:24727] [ruby-dev:24671] [ruby-dev:24642] [ruby-dev:24499] [ruby-dev:24487] [ruby-dev:24463] [ruby-dev:24432] [ruby-dev:24400] [ruby-dev:24399] [ruby-dev:24378] [ruby-dev:24311] [ruby-dev:24310] [ruby-dev:24303] [ruby-dev:24301] [ruby-dev:24289] [ruby-dev:24287] [ruby-dev:24284] なお上記のリストは、手元のruby-devアーカイブ(2004/4〜)を ・投稿したのがakrさんであり ・本文にcallccが含まれる という条件でフィルタリングした後、さらに洗い出したものです。 よろしくお願いします。 -- 斎藤ただし