[MacRuby-devel] [MacRuby] #664: MacRuby Crashes When Scheduling a Block to Run on the Main Thread from a Background Thread

MacRuby ruby-noreply at macosforge.org
Thu Apr 22 10:53:06 PDT 2010


#664: MacRuby Crashes When Scheduling a Block to Run on the Main Thread from a
Background Thread
---------------------------------+------------------------------------------
 Reporter:  dylan@…              |       Owner:  lsansonetti@…        
     Type:  defect               |      Status:  new                  
 Priority:  blocker              |   Milestone:                       
Component:  MacRuby              |    Keywords:                       
---------------------------------+------------------------------------------
 Code:

 def main_thread( &block )
   block.performSelectorOnMainThread( 'call', withObject: nil,
 waitUntilDone: true )
 end

 Thread.new do
   main_thread do
     [1,2,3].each {|i| puts i }
   end
 end

 Expected result:

 Output numbers to the console.

 Actual result:

 -Terminal-

 macruby test.rb
 Assertion failed: (errorcode == 0), function setInstance, file
 ThreadLocal.cpp, line 61.
 Abort trap


 -XCode (have to run the code twice for some reason, first time works) -

 Assertion failed: ((b->flags & flags) == flags), function
 rb_vm_prepare_block, file dispatcher.cpp, line 1786.
 Program received signal:  “SIGABRT”.

 Backtrace (note that this was pasted into a ruby cocoa application and is
 triggered from a menu click):

 #0  0x00007fff81b35fe6 in __kill ()
 #1  0x00007fff81bd6e32 in abort ()
 #2  0x00007fff81bc3e74 in __assert_rtn ()
 #3  0x00000001001427e8 in rb_vm_prepare_block ()
 #4  0x000000010115a149 in ?? ()
 #5  0x0000000100149331 in rb_vm_block_eval ()
 #6  0x00007fff87ddc647 in __NSThreadPerformPerform ()
 #7  0x00007fff869c9271 in __CFRunLoopDoSources0 ()
 #8  0x00007fff869c7469 in __CFRunLoopRun ()
 #9  0x00007fff869c6c2f in CFRunLoopRunSpecific ()
 #10 0x00007fff80ca5a75 in _NSUnhighlightCarbonMenu ()
 #11 0x00007fff80f250b8 in -[NSMenu _internalPerformActionForItemAtIndex:]
 ()
 #12 0x00007fff80dd79d5 in -[NSCarbonMenuImpl
 _carbonCommandProcessEvent:handlerCallRef:] ()
 #13 0x00007fff80c84b60 in NSSLMMenuEventHandler ()
 #14 0x00007fff886f1bd7 in DispatchEventToHandlers ()
 #15 0x00007fff886f1126 in SendEventToEventTargetInternal ()
 #16 0x00007fff8870ed49 in SendEventToEventTarget ()
 #17 0x00007fff8873dd45 in SendHICommandEvent ()
 #18 0x00007fff8876aa1a in SendMenuCommandWithContextAndModifiers ()
 #19 0x00007fff8876a9d4 in SendMenuItemSelectedEvent ()
 #20 0x00007fff8876a8dc in FinishMenuSelection ()
 #21 0x00007fff8874bcf9 in MenuSelectCore ()
 #22 0x00007fff8874b461 in _HandleMenuSelection2 ()
 #23 0x00007fff80b55b79 in _NSHandleCarbonMenuEvent ()
 #24 0x00007fff80b296a2 in _DPSNextEvent ()
 #25 0x00007fff80b28b41 in -[NSApplication
 nextEventMatchingMask:untilDate:inMode:dequeue:] ()
 #26 0x00007fff80aee747 in -[NSApplication run] ()
 #27 0x00007fff80ae7468 in NSApplicationMain ()
 #28 0x0000000101147870 in ?? ()
 #29 0x000000010014c806 in rb_vm_dispatch ()
 #30 0x00000001011263e4 in ?? ()
 #31 0x000000010016115f in rb_vm_run ()
 #32 0x00000001000462a9 in ruby_run_node ()
 #33 0x00000001001614dc in macruby_main ()
 #34 0x0000000100001d40 in main (argc=1, argv=0x7fff5fbff5f0) at
 main.m:13

 Macruby Version:

 MacRuby version 0.6 (ruby 1.9.0) [universal-darwin10.0, x86_64]
 Nightly from 04/20/2010.

 test.rb attached

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



More information about the MacRuby-devel mailing list