From 2abe548f356756788db7f893b221938a5f775ccd Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Thu, 20 Jun 2019 02:05:04 +1200 Subject: Don't change vm_stack/cfp without acquiring gvl first. --- thread.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'thread.c') diff --git a/thread.c b/thread.c index fdd2a959d1..7cb8062075 100644 --- a/thread.c +++ b/thread.c @@ -714,6 +714,10 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start) } vm_stack = alloca(size * sizeof(VALUE)); + VM_ASSERT(vm_stack); + + gvl_acquire(th->vm, th); + rb_ec_initialize_vm_stack(th->ec, vm_stack, size); ruby_thread_set_native(th); @@ -723,7 +727,6 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start) thread_debug("thread start: %p\n", (void *)th); - gvl_acquire(th->vm, th); { thread_debug("thread start (get lock): %p\n", (void *)th); rb_thread_set_current(th); -- cgit v1.2.3