It seems that with-exception-handler might be breaking false-if-exception inside terminal-width from (system repl debug). I've come across this when trying to use with-exception-handler to print backtraces for exceptions. → cat backtrace-crash.scm (peek "COLUMNS" (getenv "COLUMNS")) (with-exception-handler (lambda (exn) (backtrace)) (lambda () (+ 1 a))) → echo $COLUMNS 84 → guile --no-auto-compile backtrace-crash.scm ;;; ("COLUMNS" #f) Backtrace: Backtrace: 10 (primitive-load "/home/chris/Projects/Guix/guix-build-c…") In ice-9/boot-9.scm: 1736:10 9 (with-exception-handler _ _ #:unwind? _ # _) In ice-9/eval.scm: 159:9 8 (_ _) 223:20 7 (proc #(#(#))) In unknown file: 6 (%resolve-variable (7 . a) #) In ice-9/boot-9.scm: 1669:16 5 (raise-exception _ #:continuable? _) In unknown file: 4 (backtrace #) In system/repl/debug.scm: 148:36 3 (print-frames #(# # …) …) 72:20 2 (_) In ice-9/boot-9.scm: 1731:15 1 (with-exception-handler # …) In system/repl/debug.scm: 72:40 0 (_) system/repl/debug.scm:72:40: In procedure string->number: Wrong type argument in position 1 (expecting string): #f