diff options
| author | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2021-06-14 17:56:53 +1200 |
|---|---|---|
| committer | nagachika <nagachika@ruby-lang.org> | 2021-09-26 20:49:54 +0900 |
| commit | 5e9ec351044fb74f07f2a45a0dab1e226159b7e6 (patch) | |
| tree | d88a0da7c222748f83792654eec867debd6624e7 /include | |
| parent | 98ac62de5cb03efec0fb32684c61c0d4df692e5a (diff) | |
Wake up join list within thread EC context. (#4471)
* 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.
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions
