check return value of blocking_region_begin().
blocking_region_begin() can return FALSE if it fails to acquire GVL, so check it.
This commit is contained in:
parent
e4c1b19996
commit
3dc212896c
3
thread.c
3
thread.c
@ -1679,7 +1679,8 @@ rb_thread_call_with_gvl(void *(*func)(void *), void *data1)
|
|||||||
/* enter to Ruby world: You can access Ruby values, methods and so on. */
|
/* enter to Ruby world: You can access Ruby values, methods and so on. */
|
||||||
r = (*func)(data1);
|
r = (*func)(data1);
|
||||||
/* leave from Ruby world: You can not access Ruby values, etc. */
|
/* leave from Ruby world: You can not access Ruby values, etc. */
|
||||||
blocking_region_begin(th, brb, prev_unblock.func, prev_unblock.arg, FALSE);
|
int released = blocking_region_begin(th, brb, prev_unblock.func, prev_unblock.arg, FALSE);
|
||||||
|
RUBY_ASSERT_ALWAYS(released);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user