From d5ce7bcfa2f4d9a1d3da669ade155cc7042f84ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 17 Nov 2017 10:47:56 +0100 Subject: [PATCH] workers: Display backtrace in pre-unwind handler. * guix/workers.scm (worker-thunk): Add (const #f) as the 'catch' handler, and move previous handler as pre-unwind handler. Protect against 'make-stack' returning #f. --- guix/workers.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/guix/workers.scm b/guix/workers.scm index 0f6f54bab0..3cd683c96d 100644 --- a/guix/workers.scm +++ b/guix/workers.scm @@ -75,12 +75,14 @@ ;; Release MUTEX while executing PROC. (without-mutex mutex (catch #t proc + (const #f) (lambda (key . args) ;; XXX: In Guile 2.0 ports are not thread-safe, so this could ;; crash (Guile 2.2 is fine). (display-backtrace (make-stack #t) (current-error-port)) (print-exception (current-error-port) - (stack-ref (make-stack #t) 0) + (and=> (make-stack #t) + (cut stack-ref <> 0)) key args)))))) (loop))