Bug #14945 ยป 0001-thread.c-blocking_region_end-clear-ubf-before-unregi.patch
thread.c | ||
---|---|---|
static inline void
|
||
blocking_region_end(rb_thread_t *th, struct rb_blocking_region_buffer *region)
|
||
{
|
||
/* entry to ubf_list still permitted at this point, make it impossible: */
|
||
unblock_function_clear(th);
|
||
/* entry to ubf_list impossible at this point, so unregister is safe: */
|
||
unregister_ubf_list(th);
|
||
gvl_acquire(th->vm, th);
|
||
rb_thread_set_current(th);
|
||
thread_debug("leave blocking region (%p)\n", (void *)th);
|
||
unregister_ubf_list(th);
|
||
th->blocking_region_buffer = 0;
|
||
unblock_function_clear(th);
|
||
if (th->status == THREAD_STOPPED) {
|
||
th->status = region->prev_status;
|
||
}
|
||
-
|