Subject: bug#60799: Bogus 'Error while printing exception' message when raising srfi-35 exception

From: Ricardo Wurmus <[email-masked]>
Date: Sat, 14 Jan 2023 08:25:29 +0100

Hi Maxim,

> When raising a srfi-35 defined exception type like in the following, a
> generic (and unhelpful) "Error while printing exception" message is
> shown, with not even the exception type mentioned:
>
> (use-modules (srfi srfi-35))
>
> (define-condition-type &platform-not-found-error &error
>   platform-not-found-error?)
>
> (raise-exception &platform-not-found-error)
>
>
> Produces:
>
> Backtrace:
> In ice-9/boot-9.scm:
>   1752:10  5 (with-exception-handler _ _ #:unwind? _ # _)
> In unknown file:
>            4 (apply-smob/0 #<thunk 7f236157a2e0>)
> In ice-9/boot-9.scm:
>     724:2  3 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
> In ice-9/eval.scm:
>     619:8  2 (_ #(#(#<directory (guile-user) 7f2361580c80>)))
> In ice-9/boot-9.scm:
>    2836:4  1 (save-module-excursion _)
>   4388:12  0 (_)
>
> ice-9/boot-9.scm:4388:12: Error while printing exception.
>
> This is probably not by design, right?

Perhaps not, but conditions are expected to be raised with “raise”:

--8<---------------cut here---------------start------------->8---
(use-modules (srfi srfi-34) (srfi srfi-35))

(define-condition-type &platform-not-found-error &error
  platform-not-found-error?)

(raise (condition (&platform-not-found-error)))
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
ERROR:
  1. &platform-not-found-error
--8<---------------cut here---------------end--------------->8---

-- 
Ricardo