<div dir="ltr"><div>Hi all,</div><div><br></div><div>Stumbled upon a possible bug, unless I misunderstood something, about bubbling up errors.<br></div><div>s7  version 9.3, 2020-7-18</div><div><br></div><div>(catch #t<br>        (lambda ()<br>          (catch #t<br>                 (lambda ()<br>                   (throw &#39;some-error &quot;::: ERROR ::: (~A)~%&quot; 1))<br>                  (lambda args<br>                    (format *stderr* &quot;1st level exception args: ~A\n&quot; args)<br>                    (apply format *stderr* (cadr args)) ;; that works<br>                    (apply throw args))))<br>         (lambda args<br>           (format *stderr* &quot;2nd level exc args: ~A~%&quot; args)<br>           (apply format *stderr* (cadr args)) ;; that will FAIL!!!<br>           ))</div><div><br></div><div>In the second catch, the args have the &quot;info&quot; wrapped around an extra list.</div><div>Therefore, the (apply format *stderr* (cadr args)) fails on the 2nd level<br></div><div><br></div><div>The printout</div><div>(notice the difference between 1st and 2nd level)<br></div><div><br></div><div>1st level exception args: (some-error (&quot;::: ERROR ::: (~A)~%&quot; 1))<br>::: ERROR ::: (1)<br>2nd level exc args: (some-error ((&quot;::: ERROR ::: (~A)~%&quot; 1)))</div><div><br></div><div>And the exception from trying to &quot;apply format&quot;</div><div><br></div><div>;format argument 2, (&quot;::: ERROR ::: (~A)~%&quot; 1), is a pair but should be a string<br>;    (apply format *stderr* (cadr args))<br>;    *stdout*, line 13, position: 388<br>; ns-make-empty-let: (apply format *stderr*... ; args: (some-error ((&quot;::: ERROR ::: (~...<br>; ((let? *ns*))<br>; ((let? *ns*))<br>; ((let? *ns*))</div><div><br></div></div>