[MacRuby] #1348: Abort occurs when invoke a Module#define_method many times in non-MainThread. (was: Abort occurs when load a framework and invoke a Module#define_method in another thread.)

MacRuby ruby-noreply at macosforge.org
Sun Jul 3 23:09:57 PDT 2011


#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/>



More information about the macruby-tickets mailing list