aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-11-17 10:47:56 +0100
committerLudovic Courtès <ludo@gnu.org>2017-11-17 10:47:56 +0100
commitd5ce7bcfa2f4d9a1d3da669ade155cc7042f84ec (patch)
tree6cb280502aef5222f3f4ae6e33773b1127771f09
parent19fd7229bc668e5b34adc5357557aff3f62b9308 (diff)
downloadguix-d5ce7bcfa2f4d9a1d3da669ade155cc7042f84ec.tar
guix-d5ce7bcfa2f4d9a1d3da669ade155cc7042f84ec.tar.gz
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.
-rw-r--r--guix/workers.scm4
1 files changed, 3 insertions, 1 deletions
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))