finalizing should be checked before VM lock
This commit is contained in:
parent
7d32bf7853
commit
74ab2c3b46
5
gc.c
5
gc.c
@ -3724,10 +3724,11 @@ finalize_deferred(rb_objspace_t *objspace)
|
|||||||
static void
|
static void
|
||||||
gc_finalize_deferred(void *dmy)
|
gc_finalize_deferred(void *dmy)
|
||||||
{
|
{
|
||||||
|
rb_objspace_t *objspace = dmy;
|
||||||
|
if (ATOMIC_EXCHANGE(finalizing, 1)) return;
|
||||||
|
|
||||||
RB_VM_LOCK_ENTER();
|
RB_VM_LOCK_ENTER();
|
||||||
{
|
{
|
||||||
rb_objspace_t *objspace = dmy;
|
|
||||||
if (ATOMIC_EXCHANGE(finalizing, 1)) return;
|
|
||||||
finalize_deferred(objspace);
|
finalize_deferred(objspace);
|
||||||
ATOMIC_SET(finalizing, 0);
|
ATOMIC_SET(finalizing, 0);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user