[coop] Handle blocking in parked threads correctly.
authorZoltan Varga <vargaz@gmail.com>
Tue, 11 Aug 2015 03:20:43 +0000 (23:20 -0400)
committerZoltan Varga <vargaz@gmail.com>
Tue, 11 Aug 2015 03:20:43 +0000 (23:20 -0400)
mono/metadata/threadpool-ms.c

index e6fd6268b1548b7949c421bbae0e6fe8cf5eb2d8..b9a5a8d07601abde9c9d6d27f8909a1c8f27b278 100644 (file)
@@ -492,6 +492,8 @@ worker_park (void)
 
        mono_gc_set_skip_thread (TRUE);
 
+       MONO_PREPARE_BLOCKING;
+
        mono_mutex_lock (&threadpool->active_threads_lock);
 
        if (!mono_runtime_is_shutting_down ()) {
@@ -506,6 +508,8 @@ worker_park (void)
 
        mono_mutex_unlock (&threadpool->active_threads_lock);
 
+       MONO_FINISH_BLOCKING;
+
        mono_gc_set_skip_thread (FALSE);
 
        mono_cond_destroy (&cond);