Subject: bug#40008: Backtraces can contain very long strings

From: Ludovic Courtès <[email-masked]>
Date: Wed, 11 Mar 2020 12:13:32 +0100

Hi,

<[email-masked]> skribis:

> On Tue, Mar 10, 2020 at 11:05:24AM +0100, Jan Synacek wrote:
>> I have the following backtrace:
>> 
>> Backtrace:
>> In ice-9/boot-9.scm:
>>   1736:10  9 (with-exception-handler _ _ #:unwind? _ # _)
>> In unknown file:
>>            8 (apply-smob/0 #<thunk 651b40>)
>> In ice-9/boot-9.scm:
>>     718:2  7 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
>> In ice-9/eval.scm:
>>     619:8  6 (_ #(#(#<directory (guile-user) 74cf00>)))
>> In ice-9/boot-9.scm:
>>    2806:4  5 (save-module-excursion _)
>>   4351:12  4 (_)
>> In /home/jsynacek/./git.scm:
>>      72:0  3 (_)
>>     61:16  2 (change-spec _ _ "66.33" _ #<output: file 1>)
>>     48:12  1 (change-release "# We ship a .pc file but don't want t…" …)
>> In unknown file:
>>            0 (make-regexp "^Release:(\\s*).*$" "# We ship a .pc fil…" …)
>> 
>> ERROR: In procedure make-regexp:
>> Wrong type (expecting exact integer): "
>> <HERE COMES A LOOOONG STRING WHICH IS ABOUT 193000 CHARACTERS WIDE>
>> "
>> 
>> While this is probably not considered an error, I guess it might be better
>> to ellipsize strings in errors such is mine that are over a certain length
>> long. The important part of the backtrace was scrolled away and I got
>> confused about the string, as I thought it was part of the output and
>> started wondering why (display ...) keeps the escaped newlines in the
>> string.
>
> Some want it, some want it not. I remember a couple of discussions
> in guile-user and guile-devel about this topic.
>
> Have you tried setting debug options `width' and/or `depth' (cf. procedure
> `debug-options')?
>
> (my current defaults are 79 columns/20 rows, this is Guile 3.0).

The backtrace itself is ellipsized, but the value displayed in the
exception (the long string above) is not.

I would rather not ellipsize anything in the exception itself.

Thoughts?

Ludo’.