[MacRuby] #1084: Abort occurs when was passed Object of Method to define_method.

MacRuby ruby-noreply at macosforge.org
Wed Dec 29 15:54:44 PST 2010


#1084: Abort occurs when was passed Object of Method to define_method.
----------------------------------+-----------------------------------------
 Reporter:  watson1978@…          |       Owner:  lsansonetti@…        
     Type:  defect                |      Status:  new                  
 Priority:  blocker               |   Milestone:                       
Component:  MacRuby               |    Keywords:                       
----------------------------------+-----------------------------------------
 Test Script:
 {{{
 #!ruby
 ## ok
 # c = Class.new
 # c.class_eval { define_method(:baz, proc { return :baz}) }

 # ng
 c = Class.new
 c.class_eval { def foo; :foo; end }

 o = c.new

 c2 = Class.new(c)
 c2.class_eval { define_method(:baz, o.method(:foo)) }
 }}}

 BackTrace:
 {{{
 Program received signal SIGABRT, Aborted.
 0x00007fff8849ecae in __pthread_kill ()
 (gdb) bt
 #0  0x00007fff8849ecae in __pthread_kill ()
 #1  0x00007fff8849e5d2 in pthread_kill ()
 #2  0x00000001008ec7f6 in abort () at atomicity.h:51
 #3  0x000000010004c342 in rb_mod_define_method (mod=8590275456, sel=0x6,
 argc=0, argv=0x200062260) at proc.c:986
 #4  0x0000000100149f35 in rb_vm_dispatch (_vm=0x100d25050,
 cache=0x100ccb140, top=8590275456, self=8590275456, klass=0x200053740,
 sel=0x102e4e270, block=0x0, opt=2 '\002', argc=2, argv=0x7fff5fbfdb08) at
 dispatcher.cpp:448
 #5  0x0000000102d5a836 in ?? ()
 #6  0x0000000102d5ae38 in ?? ()
 #7  0x000000010014af2d in rb_vm_yield_under (klass=<value temporarily
 unavailable, due to optimizations>, self=8590275456, argc=<value
 temporarily unavailable, due to optimizations>, argv=0x200053740) at
 dispatcher.cpp:98
 #8  0x000000010010295f in specific_eval (argc=<value temporarily
 unavailable, due to optimizations>, argv=0x0, klass=8590275456,
 self=8590275456) at vm_eval.c:374
 #9  0x0000000100149f35 in rb_vm_dispatch (_vm=0x100d25050,
 cache=0x100cde540, top=8590066080, self=8590275456, klass=0x200053740,
 sel=0x100dd9cf0, block=0x200062ce0, opt=0 '\0', argc=0, argv=0x0) at
 dispatcher.cpp:448
 #10 0x0000000102d5a836 in ?? ()
 #11 0x0000000102d5a2d1 in ?? ()
 #12 0x0000000100161c53 in rb_vm_run (fname=<value temporarily unavailable,
 due to optimizations>, node=0x2000563c0, binding=<value temporarily
 unavailable, due to optimizations>, inside_eval=false) at vm.cpp:3942
 #13 0x0000000100040930 in ruby_run_node (n=0x2000563c0) at eval.c:211
 #14 0x0000000100000d28 in main (argc=3, argv=0x100d1de30, envp=<value
 temporarily unavailable, due to optimizations>) at main.cpp:40
 (gdb) q
 }}}

 It seems to be necessary to implement TODO of proc.c:rb_mod_define_method.

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/1084>
MacRuby <http://macruby.org/>



More information about the macruby-tickets mailing list