Version: 3.0.5 (as found on Guix System, on a x86-64 system) Here is a minimal reproducer. (use-modules (ice-9 control)) (define (test) (define (safe-point) (call-with-unblocked-asyncs (lambda () 'hi))) (let/ec ec (call-with-blocked-asyncs (lambda () (system-async-mark ec) (safe-point)))) (call-with-blocked-asyncs safe-point)) (test) Output: ice-9/boot-9.scm:1669:16: In procedure raise-exception: In procedure call-with-unblocked-asyncs: asyncs already unblocked Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. scheme@(guile-user) [1]> ,bt 2 (call-with-blocked-asyncs #) 1 (call-with-unblocked-asyncs #) In ice-9/boot-9.scm: 1669:16 0 (raise-exception _ #:continuable? _) This bug was found while trying to test whether the definition of with-mutex is correct in the present of asynchronicities (system-async-mark). (with-mutex does not use call-with-blocked-asyncs & call-with-unblocked-asyncs, while I think it should --- what if the Scheme code was interrupted in the 'in-guard' or 'out-guard' of a dynamic-wind?). Greetings, Maxime.