From 977add6c727ed422905e22ad09599c87ba7eb34b Mon Sep 17 00:00:00 2001 From: Eduardo Souza Date: Fri, 13 Jan 2023 20:09:57 +0000 Subject: [PATCH 1/2] Setting jl_gc_have_pending_finalizers to 0 before running the finalizers --- src/gc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gc.c b/src/gc.c index 7a4be83ca6ada..6d86b3e64be4e 100644 --- a/src/gc.c +++ b/src/gc.c @@ -447,6 +447,10 @@ static void run_finalizers(jl_task_t *ct) JL_DLLEXPORT void jl_gc_run_pending_finalizers(jl_task_t *ct) { +#ifdef MMTKHEAP + mmtk_jl_run_pending_finalizers(ct->ptls); + return; +#endif if (ct == NULL) ct = jl_current_task; jl_ptls_t ptls = ct->ptls; From bbb9243a561bb180028eeb0048ceb7ae1afcccef Mon Sep 17 00:00:00 2001 From: Eduardo Souza Date: Fri, 13 Jan 2023 20:46:07 +0000 Subject: [PATCH 2/2] Minor --- src/gc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gc.c b/src/gc.c index 6d86b3e64be4e..719b046b08fed 100644 --- a/src/gc.c +++ b/src/gc.c @@ -447,12 +447,13 @@ static void run_finalizers(jl_task_t *ct) JL_DLLEXPORT void jl_gc_run_pending_finalizers(jl_task_t *ct) { + + if (ct == NULL) + ct = jl_current_task; #ifdef MMTKHEAP mmtk_jl_run_pending_finalizers(ct->ptls); return; #endif - if (ct == NULL) - ct = jl_current_task; jl_ptls_t ptls = ct->ptls; if (!ptls->in_finalizer && ptls->locks.len == 0 && ptls->finalizers_inhibited == 0) { ptls->in_finalizer = 1;