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.
This commit is contained in:
Ludovic Courtès 2017-11-17 10:47:56 +01:00
parent 19fd7229bc
commit d5ce7bcfa2
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -75,12 +75,14 @@ (define (loop)
;; 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))