From 8f12372b171a1af368a22c849a12459c37051d4b Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Tue, 6 Dec 2011 16:08:36 -0600 Subject: [PATCH] adjust the synchronization in check syntax for reading doc results to cope with the case where the thread has been killed (the nacks are apparently not triggered on thread death in some cases) (optimistically) closes PR 12427 --- collects/drracket/private/syncheck/xref.rkt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/collects/drracket/private/syncheck/xref.rkt b/collects/drracket/private/syncheck/xref.rkt index 8451d3161e..43dc9f06a3 100644 --- a/collects/drracket/private/syncheck/xref.rkt +++ b/collects/drracket/private/syncheck/xref.rkt @@ -22,7 +22,7 @@ (thread (λ () (let loop () - (define-values (binding-info resp-chan nack-evt) (apply values (channel-get req-chan))) + (define-values (binding-info resp-chan nack-evt requesting-thread) (apply values (channel-get req-chan))) (define xref (force delayed-xref)) (define resp (and xref @@ -36,7 +36,8 @@ path tag))))))))) (sync (channel-put-evt resp-chan resp) - nack-evt) + nack-evt + (thread-dead-evt requesting-thread)) (loop))))) ;; this function is called from a thread that might be killed @@ -47,5 +48,5 @@ (nack-guard-evt (λ (nack-evt) (define resp-chan (make-channel)) - (channel-put req-chan (list binding-info resp-chan nack-evt)) + (channel-put req-chan (list binding-info resp-chan nack-evt (current-thread))) resp-chan))))