[MacRuby-devel] [MacRuby] #786: MacRuby does not finish when more exceptions is generated on same Thread almost at the same time.

MacRuby ruby-noreply at macosforge.org
Wed Aug 4 11:24:23 PDT 2010


#786: MacRuby does not finish when more exceptions is generated on same Thread
almost at the same time.
----------------------------------+-----------------------------------------
 Reporter:  watson1978@…          |       Owner:  lsansonetti@…        
     Type:  defect                |      Status:  new                  
 Priority:  blocker               |   Milestone:                       
Component:  MacRuby               |    Keywords:                       
----------------------------------+-----------------------------------------

Comment(by watson1978@…):

 When MacRuby threw an exception for MainThread, it does not work when
 execute pthread_cancel(MainThread).[[BR]]
 So, In substitution for pthread_cancel(), I guess it to be fixed when
 execute `__vm_raise()`.

 {{{
 #!diff
 diff --git a/vm.cpp b/vm.cpp
 index 5b71769..cfd00e0 100644
 --- a/vm.cpp
 +++ b/vm.cpp
 @@ -4610,7 +4610,12 @@ rb_vm_thread_raise(rb_vm_thread_t *t, VALUE exc)
      RoxorVM *vm = (RoxorVM *)t->vm;
      vm->push_current_exception(exc);

 -    rb_vm_thread_cancel(t);
 +    if(t->vm == RoxorVM::main) {
 +       __vm_raise();
 +    }
 +    else {
 +       rb_vm_thread_cancel(t);
 +    }
  }

  extern "C"
 }}}

 Unfortunately, I did not understand how to stop when I do an infinite loop
 in MainThread's block. So, #176 does not fix. X(

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



More information about the MacRuby-devel mailing list