* bug#36471: Unreadable Stacktrace Example
[not found] <20190702131245.15561fbd@alma-ubu>
@ 2019-07-07 14:38 ` Ludovic Courtès
0 siblings, 0 replies; only message in thread
From: Ludovic Courtès @ 2019-07-07 14:38 UTC (permalink / raw)
To: Björn Höfling; +Cc: 36471, robert vollmert
Hi Björn,
I’m reassigning this bug report to ‘guile’. :-)
Björn Höfling <bjoern.hoefling@bjoernhoefling.de> skribis:
> First the full stacktrace, below are some comments:
>
> ./pre-inst-env guix lint -c cve freecad
> Backtrace:reecad@0.18.2-1.dbb4cc6 [cve]...
> 11 (apply-smob/1 #<catch-closure 1a071a0>)
> In ice-9/boot-9.scm:
> 705:2 10 (call-with-prompt _ _ #<procedure default-prompt-handle?>)
> In ice-9/eval.scm:
> 619:8 9 (_ #(#(#<directory (guile-user) 1ac5140>)))
> In guix/ui.scm:
> 1668:12 8 (run-guix-command _ . _)
> In srfi/srfi-1.scm:
> 640:9 7 (for-each #<procedure 1df01a0 at guix/scripts/lint.scm?> ?)
> In guix/scripts/lint.scm:
> 1152:4 6 (run-checkers #<package freecad@0.18.2-1.dbb4cc6 gnu/p?> ?)
> In srfi/srfi-1.scm:
> 640:9 5 (for-each #<procedure 3e473c0 at guix/scripts/lint.scm?> ?)
> In guix/scripts/lint.scm:
> 933:4 4 (check-vulnerabilities _)
> 928:9 3 (_ _)
> In unknown file:
> 2 (force #<promise #<procedure 7f1ce3ab6228 at guix/scrip?>)
> In guix/scripts/lint.scm:
> 917:24 1 (_)
> In ice-9/boot-9.scm:
> 829:9 0 (catch srfi-34 #<procedure 37e64e0 at guix/scripts/lin?> ?)
>
> ice-9/boot-9.scm:829:9: In procedure catch:
> In procedure connect: Connection timed out
[...]
> In guix/scripts/lint.scm:
> 933:4 4 (check-vulnerabilities _)
> 928:9 3 (_ _)
>
> --> 933: Nice, I'm in check-vulnerabilities. But why is there no argument?
> --> What is this strange second line: (_ _)? Why is there nothing written?
Good question, I’m not sure why that happens, but hopefully it’s easily
fixed.
> In unknown file:
> 2 (force #<promise #<procedure 7f1ce3ab6228 at guix/scrip?>)
>
> --> Why is this in a "unknown file"?
Because ‘force’ is implemented in C, so there’s no source location info
available.
> --> Is this force/promise making my stacktrace more unreadable?
No.
> In guix/scripts/lint.scm:
> 917:24 1 (_)
>
> --> Uh. Any more details?. Is "(_)" the call to "(current-vulnerabilities*)"?!
Dunno. :-/
> In ice-9/boot-9.scm:
> 829:9 0 (catch srfi-34 #<procedure 37e64e0 at guix/scripts/lin?> ?)
>
> ice-9/boot-9.scm:829:9: In procedure catch:
> In procedure connect: Connection timed out
>
> --> Now, wait: The real problem happens somewhere down here and I don't
> have any detailed stacktrace about that?
>
> I have to manually go down into current-vulnerabilities*,
> call/nw/failsaife, etc? Why don't I get the details from here?
Part of what makes information “disappear” from stack traces is the
tail-call optimization (TCO). If F calls G, and G then calls H in tail
position, then the backtrace will suggest that F called H (G doesn’t
appear at all.)
IIRC Chez Scheme has a fancy trick that allows it to keep track of part
of the “conceptual” stack trace, without losing the space guarantees
that TCO provides. It cannot come for free though, but I wonder if
Guile should provide it in ‘--debug’ mode or something.
> Is this because in "call-with-networking-fail-safe", line 900 we
> through newly:
>
> (args
> (apply throw args))))))
>
> but then the stacktrace gets lost?
>
> Would there be a throw-with-caused-by?
Not sure what you mean, but note that in many cases ‘throw’ itself is
called in tail position, which can also contribute to obfuscating the
stack trace…
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-07-07 14:38 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20190702131245.15561fbd@alma-ubu>
2019-07-07 14:38 ` bug#36471: Unreadable Stacktrace Example Ludovic Courtès
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).