[MacRuby] #1348: Abort occurs when load a framework and invoke a Module#define_method in another thread.
#1348: Abort occurs when load a framework and invoke a Module#define_method in another thread. ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- {{{ #!ruby m1 = Module.new Thread.new { 1000.times do |i| m1.instance_eval{ define_method("m1#{i}", Proc.new{}) } end } framework 'Foundation' }}} {{{ $ DYLD_LIBRARY_PATH=. ./macruby ~/tmp/t.rb unknown: [BUG] destination 0x2000e5b98 isn't in the auto zone MacRuby 0.11 (ruby 1.9.2) [universal-darwin10.0, x86_64] zsh: abort DYLD_LIBRARY_PATH=. ./macruby ~/tmp/tttt.rb }}} BackTrace: {{{ (gdb) t a a bt Thread 7 (process 22918): #0 0x00007fff83cdaa2a in __workq_kernreturn () #1 0x00007fff83cdae3c in _pthread_wqthread () #2 0x00007fff83cdaaa5 in start_wqthread () Thread 6 (process 22918): #0 0x00007fff83cdaa2a in __workq_kernreturn () #1 0x00007fff83cdae3c in _pthread_wqthread () #2 0x00007fff83cdaaa5 in start_wqthread () Thread 5 (process 22918): #0 0x00007fff83cdaa2a in __workq_kernreturn () #1 0x00007fff83cdae3c in _pthread_wqthread () #2 0x00007fff83cdaaa5 in start_wqthread () Thread 4 (process 22918): #0 0x00007fff83cd9c0a in kevent () #1 0x00007fff83cdbadd in _dispatch_mgr_invoke () #2 0x00007fff83cdb7b4 in _dispatch_queue_invoke () #3 0x00007fff83cdb2de in _dispatch_worker_thread2 () #4 0x00007fff83cdac08 in _pthread_wqthread () #5 0x00007fff83cdaaa5 in start_wqthread () Thread 3 (process 22918): #0 0x00007fff83d9c9da in __pthread_kill () #1 0x00007fff83d9c2fe in pthread_kill () #2 0x0000000100973276 in abort () #3 0x0000000100024d8e in rb_bug (fmt=Could not find the frame base for "rb_bug". ) at error.c:226 #4 0x000000010013d99d in rb_vm_add_lvar_use (var_uses=0x7fff5fbfdc98, use=0x2000dd100, use_type=1 '\001') at vm.cpp:3083 #5 0x000000010013da5e in rb_vm_add_block_lvar_use (block=0x2000dd100) at vm.cpp:3097 #6 0x0000000100031cda in rb_vm_block_make_detachable_proc (b=0x2000dd100) at vm.h:464 #7 0x0000000100031c8c in rb_proc_alloc_with_block (klass=8590542848, proc=0x2000dd100) at proc.c:51 #8 0x000000010003245e in proc_new (klass=8590542848, is_lambda=false) at proc.c:309 #9 0x0000000100032485 in rb_proc_s_new (klass=8590542848, sel=0x7fff880b1e60, argc=0, argv=0x0) at proc.c:332 #10 0x000000010012e2b3 in ruby_dispatch [inlined] () at /Users/watson/src /macruby-master/dispatcher.cpp:448 #11 0x000000010012e2b3 in rb_vm_dispatch () at dispatcher.cpp:872 #12 0x0000000101600664 in ?? () #13 0x0000000101600f3b in ?? () #14 0x0000000100135ddb in __rb_vm_bcall [inlined] () at /Users/watson/src /macruby-master/dispatcher.cpp:98 #15 0x0000000100135ddb in vm_block_eval [inlined] () at /Users/watson/src /macruby-master/dispatcher.cpp:1221 #16 0x0000000100135ddb in rb_vm_yield_under () at dispatcher.cpp:1321 #17 0x00000001000db958 in specific_eval (argc=0, argv=0x0, klass=8590086048, self=8590086112) at vm_eval.c:339 #18 0x00000001000dbee3 in rb_obj_instance_eval_imp (self=8590086112, sel=0x100fde130, top=8590062336, argc=0, argv=0x0) at vm_eval.c:507 #19 0x000000010012e366 in ruby_dispatch [inlined] () at /Users/watson/src /macruby-master/dispatcher.cpp:457 #20 0x000000010012e366 in rb_vm_dispatch () at dispatcher.cpp:872 #21 0x0000000101600664 in ?? () #22 0x0000000101600ce3 in ?? () #23 0x0000000100134ccb in __rb_vm_bcall [inlined] () at /Users/watson/src /macruby-master/dispatcher.cpp:100 #24 0x0000000100134ccb in vm_block_eval [inlined] () at /Users/watson/src /macruby-master/dispatcher.cpp:1221 #25 0x0000000100134ccb in rb_vm_yield_args () at dispatcher.cpp:1278 #26 0x00000001000db2fd in rb_vm_yield (argc=1, argv=0x10171f928) at vm.h:697 #27 0x00000001000db2d0 in rb_yield (val=565) at vm_eval.c:183 #28 0x000000010004d1da in int_dotimes (num=4001, sel=0x100fe7350) at numeric.c:3241 #29 0x000000010012e8b4 in __rb_vm_rcall [inlined] () at /Users/watson/src /macruby-master/dispatcher.cpp:159 #30 0x000000010012e8b4 in ruby_dispatch [inlined] () at /Users/watson/src /macruby-master/dispatcher.cpp:466 #31 0x000000010012e8b4 in rb_vm_dispatch () at dispatcher.cpp:872 #32 0x0000000101600664 in ?? () #33 0x0000000101600ba1 in ?? () #34 0x0000000100132c67 in __rb_vm_bcall [inlined] () at /Users/watson/src /macruby-master/dispatcher.cpp:98 #35 0x0000000100132c67 in vm_block_eval [inlined] () at /Users/watson/src /macruby-master/dispatcher.cpp:1221 #36 0x0000000100132c67 in rb_vm_block_eval (b=0x2000250a0, argc=0, argv=0x0) at dispatcher.cpp:1228 #37 0x000000010014d0ab in rb_vm_thread_run (thread=8590085792) at vm.cpp:4858 #38 0x00007fff83cf9fd6 in _pthread_start () #39 0x00007fff83cf9e89 in thread_start () Thread 2 (process 22918): #0 0x00007fff83cdaa2a in __workq_kernreturn () #1 0x00007fff83cdae3c in _pthread_wqthread () #2 0x00007fff83cdaaa5 in start_wqthread () Thread 1 (process 22918): #0 0x00007fff842db6d7 in xmlTextReaderGetAttribute () #1 0x00007fff842dd745 in xmlTextReaderRead () #2 0x00000001000c9cd6 in bs_parser_parse (parser=0x10142cd50, path=0x7fff5fbfb350 "/System/Library/Frameworks/CoreFoundation.framework/Resources/BridgeSupport/CoreFoundation.bridgesupport", framework_path=0x101430910 "/System/Library/Frameworks/CoreFoundation.framework", options=BS_PARSE_OPTIONS_LOAD_DYLIBS, callback=0x1000e5c17 <__bs_parse_cb(_bs_parser*, char const*, bs_element_type_t, void*, void*) at bridgesupport.cpp:1084>, context=0x2000163a0, error=0x7fff5fbfc7b8) at bs.c:542 #3 0x00000001000ca1c7 in bs_parser_parse (parser=0x10142cd50, path=0x7fff5fbfc820 "/System/Library/Frameworks/Foundation.framework/Resources/BridgeSupport/Foundation.bridgesupport", framework_path=0x200021360 "/System/Library/Frameworks/Foundation.framework", options=BS_PARSE_OPTIONS_LOAD_DYLIBS, callback=0x1000e5c17 <__bs_parse_cb(_bs_parser*, char const*, bs_element_type_t, void*, void*) at bridgesupport.cpp:1084>, context=0x2000163a0, error=0x7fff5fbfc7b8) at bs.c:611 #4 0x00000001000e0d10 in RoxorCore::load_bridge_support (this=0x102068200, path=0x7fff5fbfc820 "/System/Library/Frameworks/Foundation.framework/Resources/BridgeSupport/Foundation.bridgesupport", framework_path=0x200021360 "/System/Library/Frameworks/Foundation.framework", options=1) at bridgesupport.cpp:1356 #5 0x00000001000e0d6c in rb_vm_load_bridge_support (path=0x7fff5fbfc820 "/System/Library/Frameworks/Foundation.framework/Resources/BridgeSupport/Foundation.bridgesupport", framework_path=0x200021360 "/System/Library/Frameworks/Foundation.framework", options=1) at bridgesupport.cpp:1337 #6 0x00000001000c5bdd in rb_objc_search_and_load_bridge_support (framework_path=0x200021360 "/System/Library/Frameworks/Foundation.framework") at objc.m:232 #7 0x00000001000c622a in rb_require_framework (recv=8590062336, sel=0x10114c540, argc=1, argv=0x7fff5fbfdca8) at objc.m:362 #8 0x000000010012e2b3 in ruby_dispatch [inlined] () at /Users/watson/src /macruby-master/dispatcher.cpp:448 #9 0x000000010012e2b3 in rb_vm_dispatch () at dispatcher.cpp:872 #10 0x0000000101600664 in ?? () #11 0x00000001016001bd in ?? () #12 0x000000010014a08a in rb_vm_run (fname=0x2000a8cc0 "/Users/watson/tmp/tttt.rb", node=0x200024c60, binding=0x0, inside_eval=false) at vm.cpp:4117 #13 0x000000010002898b in ruby_run_node (n=0x200024c60) at eval.c:211 #14 0x0000000100000be3 in main (argc=2, argv=0x100f1c040, envp=0x7fff5fbfde58) at main.cpp:40 (gdb) }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/1348> MacRuby <http://macruby.org/>
#1348: Abort occurs when invoke a Module#define_method many times in non- MainThread. ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- Comment(by watson1978@…): Sorry, it seems that load of framework is not related. Abort does not occur when invoke in MainThread. {{{ m1 = Module.new 1000.times do |i| m1.instance_eval{ define_method("m1#{i}", Proc.new{}) } end puts :ok }}} {{{ $ DYLD_LIBRARY_PATH=. ./macruby ~/tmp/t1.rb ok }}} but, in non-MainThread, {{{ m1 = Module.new Thread.new { 1000.times do |i| m1.instance_eval{ define_method("m1#{i}", Proc.new{}) } end }.join puts :ok }}} {{{ DYLD_LIBRARY_PATH=. ./macruby ~/tmp/t2.rb unknown: [BUG] destination 0x2000c6c78 isn't in the auto zone MacRuby 0.11 (ruby 1.9.2) [universal-darwin10.0, x86_64] zsh: abort DYLD_LIBRARY_PATH=. ./macruby ~/tmp/t2.rb }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/1348#comment:1> MacRuby <http://macruby.org/>
participants (1)
-
MacRuby