summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÖmer Sinan Ağacan <omeragacan@gmail.com>2019-02-16 13:52:08 +0300
committerBen Gamari <ben@smart-cactus.org>2019-02-22 11:26:41 -0500
commit505feaab820ae1249a126cc455b45fdf01579a75 (patch)
tree0047d1f210e8e9006f55cec682fd98edd96fdf8a
parentec2fe95c986fffb3c3f0e3772cb4a7c279ac4804 (diff)
downloadhaskell-505feaab820ae1249a126cc455b45fdf01579a75.tar.gz
Fix incorrect flush calls
These flush calls cause capabilities to flush their UpdRemSets too early, then set `upd_rem_set_syncd = true`. This causes NOT syncing UpdRemSets in nonmovingBeginFlush and losing track of some objects. Fixes #159 (return_mem_to_os)
-rw-r--r--rts/Capability.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/rts/Capability.c b/rts/Capability.c
index 5368a64dad..dbe0177ee7 100644
--- a/rts/Capability.c
+++ b/rts/Capability.c
@@ -522,8 +522,6 @@ releaseCapability_ (Capability* cap,
cap->running_task = NULL;
- nonmovingFlushCapUpdRemSetBlocks(cap);
-
// Check to see whether a worker thread can be given
// the go-ahead to return the result of an external call..
if (cap->n_returning_tasks != 0) {
@@ -885,7 +883,6 @@ yieldCapability (Capability** pCap, Task *task, bool gcAllowed)
case SYNC_FLUSH_UPD_REM_SET:
debugTrace(DEBUG_nonmoving_gc, "Flushing update remembered set blocks...");
- nonmovingFlushCapUpdRemSetBlocks(cap);
break;
default: