From: nobu.nakada@... Date: 2003-02-25T14:57:47+09:00 Subject: [ruby-dev:19658] Re: SEGV at search_method in eval.c (PR#400) なかだです。 At Mon, 24 Feb 2003 23:48:08 +0900, NAKAMURA, Hiroshi wrote: > #0 0x4012ad41 in __kill () from /lib/libc.so.6 > (gdb) up 10 > #10 0x400527fe in w_object (obj=1078229828, arg=0xbffebbd8, limit=-3) > at marshal.c:325 > 325 if (rb_respond_to(obj, s_dump)) { > (gdb) p ((struct RBasic *)obj)->flags & 0x3f > $1 = 63 > (gdb) printf "%x\n", $1 > 3f # T_NODE? > (gdb) up 4 > #14 0x40052eb3 in w_object (obj=1078141208, arg=0xbffebbd8, limit=-2) > at marshal.c:494 > 494 w_ivar(ivtbl, &c_arg); > (gdb) p ((struct RBasic *)obj)->flags & 0x3f > $2 = 7 > (gdb) p (struct RString *)obj > $3 = (struct RString *) 0x40432118 > (gdb) p *(struct RString *)obj > $4 = {basic = {flags = 7, klass = 1076034740}, len = 10, > ptr = 0x81b9b30 "yield_call", orig = 0} インスタンス変数は持っていないはずの、単純なStringのインスタン ス変数をdumpしようとしているように見えますが、w_ivar()でtblの中 身はどうなってるでしょうか。 # もしかしてgeneric_iv_tblが壊れてる? > #13 0x400526b5 in w_ivar (tbl=0x8ab3220, arg=0xbffeba90) at marshal.c:262 p *tbl x/(tbl->num_binsの値) tbl->bins p tbl->bins[(0でなかったもののインデックス)] という感じで。 # xのrepeat countに変数を指定する方法が分からない… -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦