Project

General

Profile

Bug #10438

Updated by nobu (Nobuyoshi Nakada) about 10 years ago

I am trying to make ruby 2.1.4 on a Mac 10.8.5 and the call to miniruby to update rbconfig.rb hangs. 

 When I attach to the process using gdb, the stack is: 

 ~~~ 
 (gdb) where 
 #0    st_update (key=140492321470720, table=0x7fc6e9409bd0, func=0x7fc6e98eb498, arg=140492298695832) at st.c:387 
 #1    0x000000010e5847fc in rb_fstring (str=140492321470720) at string.c:212 
 #2    0x000000010e52a8a0 in register_symid_str (id=13360, str=140492321470720) at parse.y:10373 
 #3    0x000000010e52c1b9 in rb_intern3 (name=0x10e609958 "mesg", len=4, enc=0x7fc6e9409410) at parse.y:10429 
 #4    0x000000010e5b97e5 in rb_iv_set (obj=140492321470760, name=0x0, val=140492321470800) at variable.c:2611 
 #5    0x000000010e4b7c61 in exc_initialize (argc=Cannot access memory at address 0x0 
 ) at error.c:605 
 #6    0x000000010e5d5a17 in call_cfunc_m1 (func=0x376a8b96ed956ed2, recv=4535727376, argc=0, argv=0x7fc6eaea3900) at vm_insnhelper.c:1317 
 #7    0x000000010e5df746 in vm_call0_cfunc_with_frame [inlined] () at vm_eval.c:118 
 #8    vm_call0_cfunc [inlined] () at /usr/local/prvm/ruby-2.1.4/src/ruby-2.1.4/vm_eval.c:135 
 #9    0x000000010e5df746 in vm_call0 (th=0x7fc6e98eb728, recv=140492321470720, id=4535727376, argc=-376523608, argv=0x7fc6e98eb728, me=0x7fc6e94241e0, defined_class=140492297897720) at vm_eval.c:175 
 #10 0x000000010e5ebb9d in rb_call0 (recv=Cannot access memory at address 0x0 
 ) at vm_eval.c:325 
 #11 0x000000010e5129fc in rb_class_new_instance (argc=-353748696, argv=0xe98eb97800000001, klass=140492293566576) at object.c:1860 
 #12 0x000000010e5d5a17 in call_cfunc_m1 (func=0x7fc6e9828270, recv=16829592782577336321, argc=-381652880, argv=0x7fc6eaea3928) at vm_insnhelper.c:1317 
 #13 0x000000010e5df746 in vm_call0_cfunc_with_frame [inlined] () at vm_eval.c:118 
 #14 vm_call0_cfunc [inlined] () at /usr/local/prvm/ruby-2.1.4/src/ruby-2.1.4/vm_eval.c:135 
 #15 0x000000010e5df746 in vm_call0 (th=0x7fc6e98eb958, recv=140492321470760, id=16829592782577336321, argc=-376522376, argv=0x7fc6e98eb958, me=0x7fc6e94144d0, defined_class=140492297910000) at vm_eval.c:175 
 #16 0x000000010e5e90c4 in rb_funcall (recv=140492298697368, mid=140492298697368, n=1) at vm_eval.c:325 
 #17 0x000000010e4b8da8 in rb_exc_new_str (str=140492321470800, etype=140492297896560) at error.c:588 
 #18 0x000000010e5dbb83 in rb_arg_error_new [inlined] () at /usr/local/prvm/ruby-2.1.4/src/ruby-2.1.4/vm_insnhelper.c:122 
 #19 0x000000010e5dbb83 in rb_error_arity (argc=-353748656, min=-353748656, max=3272) at vm_insnhelper.c:151 
 #20 0x000000010e4bce55 in make_exception (argc=-377322896, argv=0x6, isstr=3272) at intern.h:301 
 #21 0x00007fc6eaea39a0 in ?? () 
 #22 0x000000010e4bcf06 in rb_exc_raise (mesg=140492321470880) at eval.c:572 
 #23 0x000000010e5dbb8b in rb_error_arity (argc=<value temporarily unavailable, due to optimizations>, min=<value temporarily unavailable, due to optimizations>, max=<value temporarily unavailable, due to optimizations>) at vm_insnhelper.c:151 
 #24 0x000000010e4bce55 in make_exception (argc=-353748576, argv=0x6, isstr=3272) at intern.h:301 
 #25 0x00007fc6eaea3a18 in ?? () 
   gdb then produces an infinite stack until gdb core dumps (which I assume is a bug in gdb) 
 ~~~ 

 Other data: 

 ~~~ 
 st_update (key=140719613688080, table=0x7ffbd3409bf0, func=0x7ffbd38eb498, arg=140719562863768) at st.c:387 
 387 		 while (PTR_NOT_EQUAL(table, ptr->next, hash_val, key)) { 
 (gdb) print ptr 
 $1 = (st_table_entry *) 0x1078a5e55 
 (gdb) print *ptr 
 $2 = { 
   hash = 10036285496377639745,  
   key = 17229058033700311155,  
   record = 6647695647989104639,  
   next = 0xf66c35d5f415e41,  
   fore = 0x801f0f0000441f,  
   back = 0xbae5894855000000 
 } 
 (gdb) print ptr->next 
 $3 = (st_table_entry *) 0xf66c35d5f415e41 
 (gdb) print ptr->next->next 
 Cannot access memory at address 0xf66c35d5f415e59 
 (gdb) print *ptr->next 
 Cannot access memory at address 0xf66c35d5f415e41 
 (gdb) print *ptr 
 $4 = { 
   hash = 10036285496377639745,  
   key = 17229058033700311155,  
   record = 6647695647989104639,  
   next = 0xf66c35d5f415e41,  
   fore = 0x801f0f0000441f,  
   back = 0xbae5894855000000 
 } 
 ~~~ 
 

 address 0xf66c35d5f415e41 appears to be invalid. 

 ~~~ 
 gcc-4.2 --version 
 i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00) 
 Copyright (C) 2007 Free Software Foundation, Inc. 
 This is free software; see the source for copying conditions.    There is NO 
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 ~~~

Back