From 9fb9395beebc5c6f85571991af7fd55b4db86977 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Wed, 11 May 2011 11:00:10 +0100 Subject: [PATCH] scheduleDoGC: if we're doing heapCensus(), do it *before* releasing the other mutator threads (#5127) --- rts/Schedule.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rts/Schedule.c b/rts/Schedule.c index f5cb568..9636223 100644 --- a/rts/Schedule.c +++ b/rts/Schedule.c @@ -1447,6 +1447,12 @@ delete_threads_and_gc: recent_activity = ACTIVITY_YES; } + if (heap_census) { + debugTrace(DEBUG_sched, "performing heap census"); + heapCensus(); + performHeapProfile = rtsFalse; + } + #if defined(THREADED_RTS) if (gc_type == PENDING_GC_PAR) { @@ -1454,12 +1460,6 @@ delete_threads_and_gc: } #endif - if (heap_census) { - debugTrace(DEBUG_sched, "performing heap census"); - heapCensus(); - performHeapProfile = rtsFalse; - } - if (heap_overflow && sched_state < SCHED_INTERRUPTING) { // GC set the heap_overflow flag, so we should proceed with // an orderly shutdown now. Ultimately we want the main -- 1.7.10.4