From 891e5359bf182b988e4c4e2d4231cdb5c41d69f2 Mon Sep 17 00:00:00 2001 From: Alexander Rosenberg Date: Fri, 17 Apr 2026 01:15:27 -0700 Subject: [PATCH] Fix gc bug --- src/gc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gc.c b/src/gc.c index 190c663..448b6f2 100644 --- a/src/gc.c +++ b/src/gc.c @@ -151,7 +151,8 @@ void gc_mark_stack_for_rescan(void) { } static void free_object(LispVal *val) { - assert(OBJECT_GC_SET_P(val, GC_WHITE)); + // This is called on non-white objects during cleanup! Don't assert + // OBJECT_GC_SET_P! assert(!OBJECT_HAS_LOCAL_REFERENCE_P(val)); switch (((LispObject *) val)->type) { case TYPE_HASH_TABLE: { @@ -349,6 +350,7 @@ static void maybe_free_some_object_list_nodes(void) { static void gc_sweep_objects(size_t *restrict limit) { while (white_objects && saturating_dec(limit, 1)) { + assert(OBJECT_GC_SET_P(white_objects->obj, GC_WHITE)); free_object(white_objects->obj); } // reset the gc