diff --git a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
index d633a09b23829a172ec3f43b2490dd535d96ea45..deabd591c8f008885d6ea9ff6a9c4bc70bfa5ebe 100644
--- a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
+++ b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
@@ -551,6 +551,8 @@ done:
             mrb_top_self(mrb),
             stack_keep);
         stack_keep = proc->body.irep->nlocals;
+        /* restore to fiber */
+        mrb->c = mrb->root_c;
         /* did an exception occur? */
         if (mrb->exc) {
           p(mrb, mrb_obj_value(mrb->exc), 0);