Should not mark red (i.e. ROM allocated) objects.
MODIFY
src/gc.c
src/gc.c
@@ -772,6 +772,7 @@ mrb_gc_mark(mrb_state *mrb, struct RBasic *obj)
{
if (obj == 0) return;
if (!is_white(obj)) return;
+ if (is_red(obj)) return;
mrb_assert((obj)->tt != MRB_TT_FREE);
add_gray_list(mrb, &mrb->gc, obj);
}

Should not mark red (i.e. ROM allocated) objects.