From a10b45518d176dd4d70054f430b9158e5709af22 Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Fri, 16 Jul 2021 15:43:57 +1200 Subject: [PATCH] Add debug assertion in `rb_funcall*` that the current thread has the gvl. --- common.mk | 1 + vm.c | 1 + vm_eval.c | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/common.mk b/common.mk index 39d32d1d2a25cc..506b4324c62194 100644 --- a/common.mk +++ b/common.mk @@ -15206,6 +15206,7 @@ vm.$(OBJEXT): $(top_srcdir)/internal/serial.h vm.$(OBJEXT): $(top_srcdir)/internal/static_assert.h vm.$(OBJEXT): $(top_srcdir)/internal/string.h vm.$(OBJEXT): $(top_srcdir)/internal/symbol.h +vm.$(OBJEXT): $(top_srcdir)/internal/thread.h vm.$(OBJEXT): $(top_srcdir)/internal/variable.h vm.$(OBJEXT): $(top_srcdir)/internal/vm.h vm.$(OBJEXT): $(top_srcdir)/internal/warnings.h diff --git a/vm.c b/vm.c index b12021668c110b..78aadb6a418d4a 100644 --- a/vm.c +++ b/vm.c @@ -23,6 +23,7 @@ #include "internal/proc.h" #include "internal/re.h" #include "internal/symbol.h" +#include "internal/thread.h" #include "internal/vm.h" #include "internal/sanitizers.h" #include "iseq.h" diff --git a/vm_eval.c b/vm_eval.c index 2fed4007dedb56..bf5581cacf792b 100644 --- a/vm_eval.c +++ b/vm_eval.c @@ -1036,12 +1036,16 @@ rb_funcallv_scope(VALUE recv, ID mid, int argc, const VALUE *argv, call_type sco VALUE rb_funcallv(VALUE recv, ID mid, int argc, const VALUE *argv) { + VM_ASSERT(ruby_thread_has_gvl_p()); + return rb_funcallv_scope(recv, mid, argc, argv, CALL_FCALL); } VALUE rb_funcallv_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat) { + VM_ASSERT(ruby_thread_has_gvl_p()); + return rb_call(recv, mid, argc, argv, kw_splat ? CALL_FCALL_KW : CALL_FCALL); }