Skip to content
  • Samuel Williams's avatar
    5e9ec351
    Wake up join list within thread EC context. (#4471) · 5e9ec351
    Samuel Williams authored
    * Wake up join list within thread EC context.
    
    * Consume items from join list so that they are not re-executed.
    
    If `rb_fiber_scheduler_unblock` raises an exception, it can result in a
    segfault if `rb_threadptr_join_list_wakeup` is not within a valid EC. This
    change moves `rb_threadptr_join_list_wakeup` into the thread's top level EC
    which initially caused an infinite loop because on exception will retry. We
    explicitly remove items from the thread's join list to avoid this situation.
    
    * Verify the required scheduler interface.
    
    * Test several scheduler hooks methods with broken `unblock` implementation.
    5e9ec351
    Wake up join list within thread EC context. (#4471)
    Samuel Williams authored
    * Wake up join list within thread EC context.
    
    * Consume items from join list so that they are not re-executed.
    
    If `rb_fiber_scheduler_unblock` raises an exception, it can result in a
    segfault if `rb_threadptr_join_list_wakeup` is not within a valid EC. This
    change moves `rb_threadptr_join_list_wakeup` into the thread's top level EC
    which initially caused an infinite loop because on exception will retry. We
    explicitly remove items from the thread's join list to avoid this situation.
    
    * Verify the required scheduler interface.
    
    * Test several scheduler hooks methods with broken `unblock` implementation.
Loading