diff --git a/string.c b/string.c index 8de906bef5..1377ea37e4 100644 --- a/string.c +++ b/string.c @@ -1378,8 +1378,13 @@ rb_str_free(VALUE str) { if (FL_TEST(str, RSTRING_FSTR)) { st_data_t fstr = (st_data_t)str; - st_delete(rb_vm_fstring_table(), &fstr, NULL); - RB_DEBUG_COUNTER_INC(obj_str_fstr); + + RB_VM_LOCK_ENTER(); + { + st_delete(rb_vm_fstring_table(), &fstr, NULL); + RB_DEBUG_COUNTER_INC(obj_str_fstr); + } + RB_VM_LOCK_LEAVE(); } if (STR_EMBED_P(str)) {