summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/gc.c b/gc.c
index 0c82179eeb..cb7b8af111 100644
--- a/gc.c
+++ b/gc.c
@@ -3725,9 +3725,15 @@ static void
gc_finalize_deferred(void *dmy)
{
rb_objspace_t *objspace = dmy;
- if (ATOMIC_EXCHANGE(finalizing, 1)) return;
- finalize_deferred(objspace);
- ATOMIC_SET(finalizing, 0);
+
+ RB_VM_LOCK_ENTER();
+ {
+ rb_objspace_t *objspace = dmy;
+ if (ATOMIC_EXCHANGE(finalizing, 1)) return;
+ finalize_deferred(objspace);
+ ATOMIC_SET(finalizing, 0);
+ }
+ RB_VM_LOCK_LEAVE();
}
static void