#664: MacRuby Crashes When Scheduling a Block to Run on the Main Thread from a Background Thread ---------------------------------+------------------------------------------ Reporter: dy...@… | Owner: lsansone...@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ---------------------------------+------------------------------------------ Description changed by martinlagarde...@…:
Old description: > 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 New description: Code: {{{ #!ruby 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#comment:1> MacRuby <http://macruby.org/> _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel