こんにちは、山本 円と申します。


またまた、BUGが出ましたのでご報告します。

./foo.rb:26: [BUG] Segmentation fault
ruby 1.8.0 (2003-06-30) [i686-linux]

該当部分のコードは以下のようなものです。

if Array != val.class

osはredhat8です。

発生するスクリプトまたもスレッド、ソケット、さらにevalを使ったものです。
(一連のバグはすべて同じスクリプトで発見してます)

出るタイミングはまたしても、たまに出る、という感じです。
場所も、GC.startなどを挟むと変わります。

以下スタックトレースです。


Program received signal SIGSEGV, Segmentation fault.
0x08056c27 in rb_eval (self=1075325136, n=0x6c6f6f74) at ruby.h:630
630         if (SYMBOL_P(obj)) return rb_cSymbol;
(gdb) bt
#0  0x08056c27 in rb_eval (self=1075325136, n=0x6c6f6f74) at ruby.h:630
#1  0x08056c91 in rb_eval (self=1075325136, n=0x6c6f6f74) at ruby.h:630
#2  0x08055783 in rb_eval (self=1075325136, n=0x6c6f6f74) at eval.c:2531
#3  0x0805ae08 in rb_call0 (klass=1075336956, recv=1075325136, id=2937,
oid=1819242356, argc=0, argv=0xbfff8ba4,
    body=0x4018dba4, nosuper=0) at eval.c:5007
#4  0x0805b2b1 in rb_call (klass=1075336956, recv=1075325136, mid=2937,
argc=1, argv=0xbfff8ba0, scope=1) at eval.c:5096
#5  0x0805b583 in rb_funcall2 (recv=0, mid=2937, argc=1, argv=0xbfff8ba0) at
ruby.h:625
#6  0x0805d646 in rb_obj_call_init (obj=1075325136, argc=1, argv=0xbfff8ba0)
at eval.c:6217
#7  0x0807b81c in rb_class_new_instance (argc=1, argv=0xbfff8ba0,
klass=1075335956) at object.c:762
#8  0x08064b77 in call_cfunc (func=0x807b7fc <rb_class_new_instance>,
recv=1075335956, len=0, argc=1, argv=0x0)
    at eval.c:4742
#9  0x0805ab29 in rb_call0 (klass=1074478328, recv=1075335956, id=3337,
oid=1819242356, argc=1, argv=0xbfff8ba0,
    body=0x400b2b64, nosuper=1) at eval.c:4879
#10 0x0805b2b1 in rb_call (klass=1074478328, recv=1075335956, mid=3337,
argc=1, argv=0xbfff8ba0, scope=0) at eval.c:5096
#11 0x08056bef in rb_eval (self=1074473548, n=0x6c6f6f74) at eval.c:2975
#12 0x08056af3 in rb_eval (self=1074473548, n=0x6c6f6f74) at eval.c:2968
#13 0x0805667d in rb_eval (self=1074473548, n=0x6c6f6f74) at eval.c:3163
#14 0x0805c939 in rb_load (fname=1075331376, wrap=0) at eval.c:5736
#15 0x0805ca9e in rb_f_load (argc=1, argv=0xbfff9e70) at eval.c:5785
#16 0x08064b77 in call_cfunc (func=0x805ca68 <rb_f_load>, recv=1075382616,
len=0, argc=1, argv=0x0) at eval.c:4742
#17 0x0805ab29 in rb_call0 (klass=1074478228, recv=1075382616, id=9193,
oid=1819242356, argc=1, argv=0xbfff9e70,
    body=0x400a5734, nosuper=1) at eval.c:4879
#18 0x0805b2b1 in rb_call (klass=1074478228, recv=1075382616, mid=9193,
argc=1, argv=0xbfff9e70, scope=1) at eval.c:5096
---Type <return> to continue, or q <return> to quit---

山本 円 dan / xa2.so-net.ne.jp