Skip to content

Commit 6d9c0eb

Browse files
committed
Update lock owner before disabling GC in GC-safe lock
1 parent 7bf8cd3 commit 6d9c0eb

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

objspace_coordinator.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1564,8 +1564,8 @@ rb_gc_safe_lock_enter(rb_gc_safe_lock_t *gs_lock)
15641564
struct rb_ractor_struct *cr = GET_RACTOR();
15651565
if (gs_lock->lock_owner != cr) {
15661566
rb_native_mutex_lock(&gs_lock->lock);
1567-
if (!rb_during_gc()) gs_lock->gc_previously_disabled = rb_gc_disable();
15681567
gs_lock->lock_owner = cr;
1568+
if (!rb_during_gc()) gs_lock->gc_previously_disabled = rb_gc_disable();
15691569
}
15701570
gs_lock->lock_lev++;
15711571
}
@@ -1577,9 +1577,9 @@ rb_gc_safe_lock_leave(rb_gc_safe_lock_t *gs_lock)
15771577
if (!ruby_single_main_objspace) {
15781578
gs_lock->lock_lev--;
15791579
if (gs_lock->lock_lev == 0) {
1580-
gs_lock->lock_owner = NULL;
15811580
if (gs_lock->gc_previously_disabled == Qfalse) rb_gc_enable();
15821581
gs_lock->gc_previously_disabled = Qfalse;
1582+
gs_lock->lock_owner = NULL;
15831583
rb_native_mutex_unlock(&gs_lock->lock);
15841584
}
15851585
}

0 commit comments

Comments
 (0)