Hi Björn, I’m reassigning this bug report to ‘guile’. :-)
Björn Höfling <bjoern.hoefl...@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’.