From 84b615a00540215e5122067362b86ffdccacc169 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 11 Oct 2011 17:11:05 -0600 Subject: [PATCH] fix timing of `place-break' checks in scheduler Otherwise, a place in a `sleep' call could fail to see the break until waking up. --- src/racket/src/thread.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/racket/src/thread.c b/src/racket/src/thread.c index e070e3ecbf..8e1715ee43 100644 --- a/src/racket/src/thread.c +++ b/src/racket/src/thread.c @@ -3829,6 +3829,11 @@ void scheme_set_break_main_target(Scheme_Thread *p) static void check_ready_break() { +#if defined(MZ_USE_PLACES) + if (!do_atomic) + scheme_place_check_for_interruption(); +#endif + if (delayed_break_ready) { if (scheme_main_thread) { delayed_break_ready = 0; @@ -4242,10 +4247,6 @@ void scheme_thread_block(float sleep_time) if (!do_atomic) GC_check_master_gc_request(); #endif -#if defined(MZ_USE_PLACES) - if (!do_atomic) - scheme_place_check_for_interruption(); -#endif /* Propagate memory-use information and check for custodian-based GC triggers due to child place memory use: */