From: Zefram <zefram@fysh.org>
To: 16357@debbugs.gnu.org
Subject: bug#16357: insufficient print abbreviation in error messages
Date: Sun, 5 Jan 2014 23:00:32 +0000 [thread overview]
Message-ID: <20140105230032.GB30283@fysh.org> (raw)
When guile is constructing error messages that display offending objects,
in version 2.0.9 it never abbreviates long or deep structures. This can
easily lead to pathologically-long messages that take stupid amounts of
time and memory to construct and to display. By contrast, guile-1.8
applies abbreviation at a reasonable level, and objects appearing in
stack traces have reasonable abbreviation on both versions. Two very
mild examples:
$ guile-1.8 --debug -c "(read (let aaa ((n 100) (v '())) (if (= n 0) v (aaa (- n 1) (cons n v)))))"
Backtrace:
In current input:
1: 0* [read {(1 2 3 4 5 6 7 8 9 ...)}]
<unnamed port>:1:1: In procedure read in expression (read (# 100 #)):
<unnamed port>:1:1: Wrong type argument in position 1 (expecting open input port): (1 2 3 4 5 6 7 8 9 10 ...)
$ guile-2.0 --debug -c "(read (let aaa ((n 100) (v '())) (if (= n 0) v (aaa (- n 1) (cons n v)))))"
Backtrace:
In ice-9/boot-9.scm:
157: 7 [catch #t #<catch-closure d68400> ...]
In unknown file:
?: 6 [apply-smob/1 #<catch-closure d68400>]
In ice-9/boot-9.scm:
63: 5 [call-with-prompt prompt0 ...]
In ice-9/eval.scm:
432: 4 [eval # #]
In unknown file:
?: 3 [call-with-input-string "(read (let aaa ((n 100) (v '())) (if (= n 0) v (aaa (- n 1) (cons n v)))))" ...]
In ice-9/command-line.scm:
180: 2 [#<procedure c83ac0 at ice-9/command-line.scm:175:6 (port)> #<input: string b495b0>]
In unknown file:
?: 1 [eval (read (let aaa (# #) (if # v #))) #<directory (guile-user) d5cc60>]
?: 0 [read (1 2 3 4 5 6 7 8 9 ...)]
ERROR: In procedure read:
ERROR: In procedure read: Wrong type argument in position 1 (expecting open input port): (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100)
$ guile-1.8 --debug -c "(read (let aaa ((n 100) (v '())) (if (= n 0) v (aaa (- n 1) (cons v n)))))"
Backtrace:
In current input:
1: 0* [read {(((# . 3) . 2) . 1)}]
<unnamed port>:1:1: In procedure read in expression (read (# 100 #)):
<unnamed port>:1:1: Wrong type argument in position 1 (expecting open input port): (((((((# . 7) . 6) . 5) . 4) . 3) . 2) . 1)
$ guile-2.0 --debug -c "(read (let aaa ((n 100) (v '())) (if (= n 0) v (aaa (- n 1) (cons v n)))))"
Backtrace:
In ice-9/boot-9.scm:
157: 7 [catch #t #<catch-closure 1c71400> ...]
In unknown file:
?: 6 [apply-smob/1 #<catch-closure 1c71400>]
In ice-9/boot-9.scm:
63: 5 [call-with-prompt prompt0 ...]
In ice-9/eval.scm:
432: 4 [eval # #]
In unknown file:
?: 3 [call-with-input-string "(read (let aaa ((n 100) (v '())) (if (= n 0) v (aaa (- n 1) (cons v n)))))" ...]
In ice-9/command-line.scm:
180: 2 [#<procedure 1c89da0 at ice-9/command-line.scm:175:6 (port)> #<input: string 1a505b0>]
In unknown file:
?: 1 [eval (read (let aaa (# #) (if # v #))) #<directory (guile-user) 1c65c60>]
?: 0 [read (((# . 3) . 2) . 1)]
ERROR: In procedure read:
ERROR: In procedure read: Wrong type argument in position 1 (expecting open input port): ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() . 100) . 99) . 98) . 97) . 96) . 95) . 94) . 93) . 92) . 91) . 90) . 89) . 88) . 87) . 86) . 85) . 84) . 83) . 82) . 81) . 80) . 79) . 78) . 77) . 76) . 75) . 74) . 73) . 72) . 71) . 70) . 69) . 68) . 67) . 66) . 65) . 64) . 63) . 62) . 61) . 60) . 59) . 58) . 57) . 56) . 55) . 54) . 53) . 52) . 51) . 50) . 49) . 48) . 47) . 46) . 45) . 44) . 43) . 42) . 41) . 40) . 39) . 38) . 37) . 36) . 35) . 34) . 33) . 32) . 31) . 30) . 29) . 28) . 27) . 26) . 25) . 24) . 23) . 22) . 21) . 20) . 19) . 18) . 17) . 16) . 15) . 14) . 13) . 12) . 11) . 10) . 9) . 8) . 7) . 6) . 5) . 4) . 3) . 2) . 1)
Debian incarnation of this bug report:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=734128
-zefram
next reply other threads:[~2014-01-05 23:00 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-05 23:00 Zefram [this message]
2016-06-21 12:17 ` bug#16357: insufficient print abbreviation in error messages Andy Wingo
2016-06-21 12:38 ` Zefram
2016-06-21 15:10 ` Andy Wingo
2016-06-23 16:57 ` Mark H Weaver
[not found] ` <87lh1vrggi.fsf@netris.org>
2016-06-23 17:59 ` Andy Wingo
2016-06-26 1:05 ` Mark H Weaver
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140105230032.GB30283@fysh.org \
--to=zefram@fysh.org \
--cc=16357@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).