From 4023cf174e113f4eb9a04e8219101c8f21376677 Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Fri, 16 Sep 2022 16:18:39 -0400 Subject: [PATCH 1/2] gc: add missing root for binding->ty field --- src/gc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/gc.c b/src/gc.c index 4f74afb075189..1d2c9445a3b61 100644 --- a/src/gc.c +++ b/src/gc.c @@ -2497,6 +2497,16 @@ module_binding: { // Record the size used for the box for non-const bindings gc_heap_snapshot_record_module_to_binding(binding->parent, b); (void)vb; + jl_value_t *ty = jl_atomic_load_relaxed(&b->ty); + if (ty && ty != (jl_value_t*)jl_any_type) { + verify_parent2("module", binding->parent, + &b->typ, "binding(%s)", jl_symbol_name(b->name)); + if (gc_try_setmark(ty, &binding->nptr, &tag, &bits)) { + new_obj = ty; + gc_repush_markdata(&sp, gc_mark_binding_t); + goto mark; + } + } jl_value_t *value = jl_atomic_load_relaxed(&b->value); jl_value_t *globalref = jl_atomic_load_relaxed(&b->globalref); if (value) { From 335c004d5f5b0f7cc8b0531453e36956721fc3e2 Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Thu, 29 Sep 2022 20:45:35 +0200 Subject: [PATCH 2/2] Update src/gc.c --- src/gc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gc.c b/src/gc.c index 1d2c9445a3b61..b2ec0fdb75597 100644 --- a/src/gc.c +++ b/src/gc.c @@ -2500,7 +2500,7 @@ module_binding: { jl_value_t *ty = jl_atomic_load_relaxed(&b->ty); if (ty && ty != (jl_value_t*)jl_any_type) { verify_parent2("module", binding->parent, - &b->typ, "binding(%s)", jl_symbol_name(b->name)); + &b->ty, "binding(%s)", jl_symbol_name(b->name)); if (gc_try_setmark(ty, &binding->nptr, &tag, &bits)) { new_obj = ty; gc_repush_markdata(&sp, gc_mark_binding_t);