From: Simon Marlow Date: Wed, 11 May 2011 10:00:10 +0000 (+0100) Subject: scheduleDoGC: if we're doing heapCensus(), do it *before* releasing X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=9fb9395beebc5c6f85571991af7fd55b4db86977 scheduleDoGC: if we're doing heapCensus(), do it *before* releasing the other mutator threads (#5127) --- 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