[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#36471: Unreadable Stacktrace Example
From: |
Ludovic Courtès |
Subject: |
bug#36471: Unreadable Stacktrace Example |
Date: |
Sun, 07 Jul 2019 16:38:08 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) |
Hi Björn,
I’m reassigning this bug report to ‘guile’. :-)
Björn Höfling <address@hidden> 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’.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug#36471: Unreadable Stacktrace Example,
Ludovic Courtès <=