#819: Getting references to Method instances leads to segfault -------------------------------------+-------------------------------------- Reporter: eloy.de.en...@… | Owner: lsansone...@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: -------------------------------------+-------------------------------------- As discussed with Laurent, it was hard to reduce the problem. Hence, here are the steps to take, to run a spec which shows the problem:
{{{ % git clone git://github.com/alloy/interactive-macruby.git im % cd im % git checkout 966e48cd04e1ee77630869af7f75c356cd106981 % env DYLD_LIBRARY_PATH=../macruby gdb --args macruby -I /Library/Ruby/Gems/1.8/gems/mspec-1.5.17/lib /usr/bin/mspec-run spec/node_spec.rb }}} (You need the mspec gem installed and adjust the paths in the last line accordingly.) The backtrace: {{{ Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_INVALID_ADDRESS at address: 0x0000000000000018 0x0000000100049978 in method_eq (method=<value temporarily unavailable, due to optimizations>, sel=<value temporarily unavailable, due to optimizations>, other=8599443168) at proc.c:721 721 if (m1->oclass != m2->oclass (gdb) bt #0 0x0000000100049978 in method_eq (method=<value temporarily unavailable, due to optimizations>, sel=<value temporarily unavailable, due to optimizations>, other=8599443168) at proc.c:721 #1 0x00000001001414fb in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e51840, top=0, self=8600378144, klass=0x2000a5360, sel=0x100f6ba40, block=0x0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbec438) at dispatcher.cpp:161 #2 0x000000010355a870 in ?? () #3 0x0000000103597c1a in ?? () #4 0x0000000106fd353f in ?? () #5 0x00000001001414fb in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e6fe40, top=0, self=8599775776, klass=0x200968060, sel=0x100f6ba40, block=0x0, opt=2 '\002', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbecdb8) at dispatcher.cpp:161 #6 0x000000010006d700 in rb_equal (obj1=8599775776, obj2=8600076928) at vm.h:594 #7 0x0000000100016b18 in rb_ary_equal (ary1=8600117504, ary2=8599978848) at array.c:139 #8 0x00000001001414fb in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e51480, top=0, self=8600117504, klass=0x20006d2c0, sel=0x100f6ba40, block=0x0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbedb58) at dispatcher.cpp:161 #9 0x000000010355a870 in ?? () #10 0x0000000103597c1a in ?? () #11 0x00000001035b3024 in ?? () #12 0x00000001001414fb in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e6f3c0, top=0, self=8599996960, klass=0x2006682a0, sel=0x100f6ba40, block=0x0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbee8f8) at dispatcher.cpp:161 #13 0x000000010355a870 in ?? () #14 0x0000000103597c1a in ?? () #15 0x0000000106fe07b9 in ?? () #16 0x000000010014221d in rb_vm_yield_under (klass=<value temporarily unavailable, due to optimizations>, self=8597242336, argc=<value temporarily unavailable, due to optimizations>, argv=0x2006682a0) at dispatcher.cpp:98 #17 0x00000001000ff7ff in specific_eval (argc=<value temporarily unavailable, due to optimizations>, argv=0x0, klass=8597240960, self=8597242336) at vm_eval.c:372 #18 0x000000010014156a in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e72c00, top=8596070016, self=8597242336, klass=0x2006f7c80, sel=0x100fd04d0, block=0x200968480, opt=0 '\0', argc=0, argv=0x0) at dispatcher.cpp:444 #19 0x000000010355a870 in ?? () #20 0x0000000106f8d805 in ?? () #21 0x00000001001414fb in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e7a7c0, top=8599606848, self=8596070016, klass=0x2005da620, sel=0x1060d5910, block=0x200968480, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbf08c8) at dispatcher.cpp:161 #22 0x000000010355a870 in ?? () #23 0x0000000106fd6862 in ?? () #24 0x00000001001440d7 in rb_vm_yield_args (_vm=0x100f1e410, argc=<value temporarily unavailable, due to optimizations>, argv=0x2005da620) at dispatcher.cpp:100 #25 0x0000000100038676 in enum_all_func [inlined] () at /Users/eloy/Documents/DEVELOPMENT/MacRuby/macruby/enum.c:872 #26 0x0000000100038676 in all_iter_i (i=<value temporarily unavailable, due to optimizations>, memo=0x7fff5fbf1ad8, argc=<value temporarily unavailable, due to optimizations>, argv=<value temporarily unavailable, due to optimizations>) at enum.c:872 #27 0x0000000100144175 in rb_vm_yield_args (_vm=0x100f1e410, argc=1, argv=0x7fff5fbf1128) at dispatcher.cpp:1066 #28 0x00000001000fe1c8 in rb_yield (val=8599672960) at vm_eval.c:196 #29 0x000000010001541d in rary_each (ary=8600308224, sel=<value temporarily unavailable, due to optimizations>) at array.c:1064 #30 0x0000000100141516 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e52680, top=0, self=8600308224, klass=0x20006d2c0, sel=0x100f4ca20, block=0x2009a6f80, opt=2 '\002', argc=<value temporarily unavailable, due to optimizations>, argv=0x0) at dispatcher.cpp:159 #31 0x00000001000fdd43 in rb_objc_block_call (obj=8600308224, sel=0x100f4ca20, argc=0, argv=0x0, bl_proc=<value temporarily unavailable, due to optimizations>, data2=<value temporarily unavailable, due to optimizations>) at vm.h:594 #32 0x0000000100037417 in enum_all (obj=8600308224, sel=<value temporarily unavailable, due to optimizations>) at enum.c:896 #33 0x0000000100141516 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e6ac80, top=8599606848, self=8600308224, klass=0x20006d2c0, sel=0x100fb82c0, block=0x2009f0280, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x0) at dispatcher.cpp:159 #34 0x000000010355a870 in ?? () #35 0x0000000106fd64ac in ?? () #36 0x00000001001414ac in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e80880, top=8599606848, self=8599606848, klass=0x20060b640, sel=0x1060d5910, block=0x0, opt=2 '\002', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbf2a20) at dispatcher.cpp:165 #37 0x000000010355a870 in ?? () #38 0x0000000106fd97a4 in ?? () #39 0x00000001001440d7 in rb_vm_yield_args (_vm=0x100f1e410, argc=<value temporarily unavailable, due to optimizations>, argv=0x20060b640) at dispatcher.cpp:100 #40 0x00000001000fe1c8 in rb_yield (val=8600346176) at vm_eval.c:196 #41 0x000000010001541d in rary_each (ary=8600527360, sel=<value temporarily unavailable, due to optimizations>) at array.c:1064 #42 0x0000000100141516 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e52680, top=8599606848, self=8600527360, klass=0x20006d2c0, sel=0x100f4ca20, block=0x2009ab5e0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x0) at dispatcher.cpp:159 #43 0x000000010355a870 in ?? () #44 0x0000000106fd7f11 in ?? () #45 0x0000000100141516 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e60a80, top=8596070016, self=8599606848, klass=0x20060b640, sel=0x1080133f0, block=0x0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x0) at dispatcher.cpp:159 #46 0x000000010355a870 in ?? () #47 0x00000001035c112d in ?? () #48 0x00000001001414d5 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e6fcc0, top=8590069344, self=8596070016, klass=0x2005da620, sel=0x1081aae80, block=0x20096c9e0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbf6298) at dispatcher.cpp:163 #49 0x000000010355a870 in ?? () #50 0x00000001035c137e in ?? () #51 0x00000001001414ac in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e7bf00, top=8590069344, self=8590069344, klass=0x200020680, sel=0x1081aae80, block=0x20096c9e0, opt=2 '\002', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbf6440) at dispatcher.cpp:165 #52 0x000000010355a870 in ?? () #53 0x0000000106f8e2cd in ?? () #54 0x000000010014e288 in rb_vm_run (fname=<value temporarily unavailable, due to optimizations>, node=0x200656280, binding=<value temporarily unavailable, due to optimizations>, inside_eval=false) at vm.cpp:3787 #55 0x0000000100047f85 in rb_load (fname=<value temporarily unavailable, due to optimizations>, wrap=<value temporarily unavailable, due to optimizations>) at load.c:95 #56 0x000000010004803a in rb_f_load (rcv=<value temporarily unavailable, due to optimizations>, sel=<value temporarily unavailable, due to optimizations>, argc=<value temporarily unavailable, due to optimizations>, argv=<value temporarily unavailable, due to optimizations>) at load.c:120 #57 0x00000001001415b9 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e7c530, top=8597242336, self=8590038848, klass=0x200019700, sel=0x7fff82168c91, block=0x0, opt=0 '\0', argc=1, argv=0x7fff5fbf7e68) at dispatcher.cpp:435 #58 0x000000010355a870 in ?? () #59 0x0000000106f8d6e8 in ?? () #60 0x000000010014221d in rb_vm_yield_under (klass=<value temporarily unavailable, due to optimizations>, self=8597242336, argc=<value temporarily unavailable, due to optimizations>, argv=0x200019700) at dispatcher.cpp:98 #61 0x00000001000ff7ff in specific_eval (argc=<value temporarily unavailable, due to optimizations>, argv=0x0, klass=8597240960, self=8597242336) at vm_eval.c:372 #62 0x000000010014156a in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e72c00, top=8596070016, self=8597242336, klass=0x2006f7c80, sel=0x100fd04d0, block=0x2006f1000, opt=0 '\0', argc=0, argv=0x0) at dispatcher.cpp:444 #63 0x000000010355a870 in ?? () #64 0x0000000106f8d805 in ?? () #65 0x00000001001414fb in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e7a7c0, top=8596070016, self=8596070016, klass=0x2005da620, sel=0x1060d5910, block=0x2006f1000, opt=2 '\002', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbf9dd8) at dispatcher.cpp:161 #66 0x000000010355a870 in ?? () #67 0x0000000106f8d2a8 in ?? () #68 0x00000001001440d7 in rb_vm_yield_args (_vm=0x100f1e410, argc=<value temporarily unavailable, due to optimizations>, argv=0x2005da620) at dispatcher.cpp:100 #69 0x00000001000fe1c8 in rb_yield (val=8597315392) at vm_eval.c:196 #70 0x000000010001541d in rary_each (ary=8597268256, sel=<value temporarily unavailable, due to optimizations>) at array.c:1064 #71 0x0000000100141516 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e52680, top=8596070016, self=8597268256, klass=0x20006d2c0, sel=0x100f4ca20, block=0x2006feae0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x0) at dispatcher.cpp:159 #72 0x000000010355a870 in ?? () #73 0x0000000106f8ccba in ?? () #74 0x0000000100141516 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e68be0, top=8596070016, self=8596070016, klass=0x2005da620, sel=0x7fff873a632e, block=0x0, opt=1 '\001', argc=<value temporarily unavailable, due to optimizations>, argv=0x0) at dispatcher.cpp:159 #75 0x000000010355a870 in ?? () #76 0x0000000106f8c2f7 in ?? () #77 0x0000000100141516 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e669c0, top=8596723040, self=8596070016, klass=0x2005da620, sel=0x1080133f0, block=0x0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x0) at dispatcher.cpp:159 #78 0x000000010355a870 in ?? () #79 0x0000000106f8bd77 in ?? () #80 0x0000000100141516 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e6ab00, top=8595905888, self=8596723040, klass=0x2005b1d60, sel=0x7fff8081cb3c, block=0x0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x0) at dispatcher.cpp:159 #81 0x000000010355a870 in ?? () #82 0x0000000106f7d48f in ?? () #83 0x0000000100141516 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e5c4f0, top=8590069344, self=8595905888, klass=0x2005b1ea0, sel=0x7fff808c6011, block=0x0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x0) at dispatcher.cpp:159 #84 0x000000010355a870 in ?? () #85 0x000000010359e5ee in ?? () #86 0x000000010014e288 in rb_vm_run (fname=<value temporarily unavailable, due to optimizations>, node=0x2003ff200, binding=<value temporarily unavailable, due to optimizations>, inside_eval=false) at vm.cpp:3787 #87 0x0000000100047f85 in rb_load (fname=<value temporarily unavailable, due to optimizations>, wrap=<value temporarily unavailable, due to optimizations>) at load.c:95 #88 0x000000010004803a in rb_f_load (rcv=<value temporarily unavailable, due to optimizations>, sel=<value temporarily unavailable, due to optimizations>, argc=<value temporarily unavailable, due to optimizations>, argv=<value temporarily unavailable, due to optimizations>) at load.c:120 #89 0x00000001001415b9 in rb_vm_dispatch (_vm=0x100f1e410, cache=0x100e75c30, top=8590069344, self=8590069344, klass=0x200020680, sel=0x7fff82168c91, block=0x0, opt=2 '\002', argc=1, argv=0x7fff5fbff3a0) at dispatcher.cpp:435 #90 0x000000010355a870 in ?? () #91 0x000000010355a337 in ?? () #92 0x000000010014e288 in rb_vm_run (fname=<value temporarily unavailable, due to optimizations>, node=0x2000ce6c0, binding=<value temporarily unavailable, due to optimizations>, inside_eval=false) at vm.cpp:3787 #93 0x00000001000400f0 in ruby_run_node (n=0x2000ce6c0) at eval.c:211 #94 0x0000000100000d28 in main () }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/819> MacRuby <http://macruby.org/> _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel