diff --git a/libguile/continuations.c b/libguile/continuations.c index 50c460d01..5a7dde409 100644 --- a/libguile/continuations.c +++ b/libguile/continuations.c @@ -21,7 +21,9 @@ #include "libguile/_scm.h" #include +#include +#include "libguile/async.h" #include "libguile/debug.h" #include "libguile/root.h" #include "libguile/stackchk.h" @@ -267,6 +269,12 @@ scm_dynthrow (SCM cont, SCM val) SCM_STACKITEM *dst = thread->continuation_base; SCM_STACKITEM stack_top_element; + if (scm_i_critical_section_level) + { + fprintf (stderr, "continuation invoked from within critical section.\n"); + abort (); + } + #if SCM_STACK_GROWS_UP if (dst + continuation->num_stack_items >= &stack_top_element) grow_stack (cont, val);