In MzScheme, (non-escaping) continuations are implemented by copying the C stack and using setjmp and longjmp. As long a C/C++ application invokes MzScheme evaluation through the top-level evaluation functions ( scheme_eval, scheme_eval, etc., as opposed to _scheme_eval, _scheme_apply, etc.), the code is protected against any unusual behavior from Scheme evaluations (such as returning twice from a fucntion) because continuation invocations ae confined to jumps within a single top-level evaluation.