Mark the exception object in the final marking phase; ref
MODIFY
src/gc.c
src/gc.c
@@ -995,6 +995,7 @@ static void
final_marking_phase(mrb_state *mrb, mrb_gc *gc)
{
mark_context(mrb, mrb->c);
+ mrb_gc_mark(mrb, (struct RBasic*)mrb->exc);
gc_mark_gray_list(mrb, gc);
mrb_assert(gc->gray_list == NULL);
gc->gray_list = gc->atomic_gray_list;

Mark the exception object in the final marking phase; ref #3702