[MacRuby-devel] [MacRuby] #620: Yielding a block inside a loop in a thread crashes the VM

MacRuby ruby-noreply at macosforge.org
Thu Jul 22 22:53:19 PDT 2010


#620: Yielding a block inside a loop in a thread crashes the VM
---------------------------------+------------------------------------------
 Reporter:  honglilai@…          |       Owner:  lsansonetti@…        
     Type:  defect               |      Status:  new                  
 Priority:  blocker              |   Milestone:                       
Component:  MacRuby              |    Keywords:                       
---------------------------------+------------------------------------------

Comment(by watson1978@…):

 In dispatcher.cpp:

 When removed flag of VM_BLOCK_THREAD from b->flags in rb_vm_yield_args(),

  * Other than a main thread
  * returned "*cached = true" in RoxorVM::uncache_or_create_block()

 At the above condition, VM_BLOCK_THREAD does not set to b->flags.
 So, calls yield at second time, assertion failed at "assert((b->flags &
 flags) == flags);" in rb_vm_prepare_block().

 I atach a patch file. Please check it.

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/620#comment:3>
MacRuby <http://macruby.org/>



More information about the MacRuby-devel mailing list