diff --git a/src/core/ev.c b/src/core/ev.c index 70408f40..e3be60c2 100644 --- a/src/core/ev.c +++ b/src/core/ev.c @@ -3038,6 +3038,9 @@ JANET_CORE_FN(cfun_ev_go, fiber->env->proto = janet_vm.fiber->env; } else { fiber = janet_getfiber(argv, 0); + if (janet_fiber_status(fiber) != JANET_STATUS_NEW) { + janet_panic("can only schedule new fibers where (= (fiber/status f) :new)"); + } } fiber->supervisor_channel = supervisor; janet_schedule(fiber, value); diff --git a/test/suite-ev2.janet b/test/suite-ev2.janet index bcb6dd7f..c94a2d86 100644 --- a/test/suite-ev2.janet +++ b/test/suite-ev2.janet @@ -78,4 +78,10 @@ (ev/sleep 0.1) # can we do better? (assert (= 0 (ev/count supervisor)) "empty supervisor") +# Issue #1707 +(def f (coro (repeat 10 (yield 1)))) +(resume f) +(assert-error "cannot schedule non-new fiber" + (ev/go f)) + (end-suite)