From d724514a74d7eee78e9e299d8f27485df5f70c8b Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Thu, 22 Jul 2010 19:28:12 -0600 Subject: [PATCH] Fix hang on error in parallel build --- collects/setup/parallel-do.rkt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/collects/setup/parallel-do.rkt b/collects/setup/parallel-do.rkt index 9061895536..2c00051efa 100644 --- a/collects/setup/parallel-do.rkt +++ b/collects/setup/parallel-do.rkt @@ -82,7 +82,8 @@ (send/msg cmd-list in))]) (loop idle (cons (list job wrkr) inflight) count)))] ;; Queue empty and all workers idle, we are all done - [(list (and (? empty?) idle) (list) count) (void)] + [(list (and (? empty?) idle) (list) count) + (set! workers idle)] ;; Wait for reply from worker [(list idle inflight count) (apply sync (map (λ (node-worker) (match node-worker @@ -180,7 +181,7 @@ (send/resp (list 'DONE result))) (define (send/errorp message) (send/resp (list 'ERROR message))) - (with-handlers ([exn:fail? (lambda (x) (send/errorp (exn-message x)))]) + (with-handlers ([exn:fail? (lambda (x) (send/errorp (exn-message x)) (loop))]) (parameterize ([current-output-port out-str-port] [current-error-port err-str-port]) (syntax-parameterize ([send/success (make-rename-transformer #'send/successp)]