From: matz@... (Yukihiro Matsumoto) Date: 2002-12-30T21:13:09+09:00 Subject: Re: Segfault in Ruby 1.7.x/1.8 Proc#to_s Hi, In message "Re: Segfault in Ruby 1.7.x/1.8 Proc#to_s" on 02/12/30, Michael Granger writes: |> Could you show me |> |> p node |> p *node |> p *data |> |> here? | |Program received signal SIGSEGV, Segmentation fault. |0x4005c8c6 in proc_to_s (self=1076502348, other=1076214464) at | eval.c:6736 |6736 len += strlen(node->nd_file) + 2 + | (SIZEOF_LONG*CHAR_BIT-NODE_LSHIFT)/3; |(gdb) p node |$1 = (NODE *) 0x402cd228 | |(gdb) p *node |$2 = {flags = 61, nd_file = 0x0, u1 = {node = 0x0, id = 0, value = 0, | cfunc = 0, tbl = 0x0}, u2 = {node = 0x0, id = 0, argc = 0, value = | 0}, u3 = {node = 0x0, id = 0, state = 0, entry = 0x0, cnt = 0, value | = 0}} | |(gdb) p *data |$3 = {var = 0x402cd368, body = 0x402cd250, self = 1076591148, frame = | {self = 1076443644, argc = 0, argv = 0x0, last_func = 0, orig_func = | 1076443644, last_class = 0, cbase = 1076522288, prev = 0x8128660, | tmp = 0x0, node = 0x402cd228, iter = 0, flags = 0}, scope = | 0x402a6d44, tag = 0x402a2280, klass = 1076591148, iter = 0, vmode = | 2, flags = 3, dyna_vars = 0x0, orig_thread = 1076424564, wrapper = | 0, prev = 0x0} Would this patch help you? --- gc.c 29 Dec 2002 14:51:22 -0000 1.114 +++ gc.c 30 Dec 2002 12:12:04 -0000 @@ -1133,2 +1133,3 @@ rb_gc_mark_frame(frame) rb_gc_mark(frame->cbase); + rb_gc_mark((VALUE)frame->node); }