From f20222b5a75097f0c662f109148cb083452bdb9a Mon Sep 17 00:00:00 2001 From: Elliot Saba Date: Thu, 6 Oct 2022 12:10:25 -0700 Subject: [PATCH] gc: add missing root for binding->ty field (#46806) Co-authored-by: Jameson Nash (cherry picked from commit 45b96c4f1ae03dc7f6bf227e50cd2b44dad5b5c4) --- src/gc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/gc.c b/src/gc.c index b60cc4ff7e8d6..893b76139b7e6 100644 --- a/src/gc.c +++ b/src/gc.c @@ -2457,6 +2457,16 @@ module_binding: { void *vb = jl_astaggedvalue(b); verify_parent1("module", binding->parent, &vb, "binding_buff"); (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->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); + goto mark; + } + } jl_value_t *value = jl_atomic_load_relaxed(&b->value); jl_value_t *globalref = jl_atomic_load_relaxed(&b->globalref); if (value) {