summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonmar <unknown>2005-11-25 14:33:12 +0000
committersimonmar <unknown>2005-11-25 14:33:12 +0000
commitdb18148d1a62abc745da955530d7f46a6f1e9f36 (patch)
tree895b9f8ec1c5fedacf6da943dfbac562c730d404
parentc282a8106fc20dcd96025f7aca52fb69cd0ac670 (diff)
downloadhaskell-db18148d1a62abc745da955530d7f46a6f1e9f36.tar.gz
[project @ 2005-11-25 14:33:12 by simonmar]
We must empty the suspended_ccalling_tasks and the returning_task list when forking.
-rw-r--r--ghc/rts/Schedule.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ghc/rts/Schedule.c b/ghc/rts/Schedule.c
index 8fe711acb3..d1a6a55231 100644
--- a/ghc/rts/Schedule.c
+++ b/ghc/rts/Schedule.c
@@ -2088,9 +2088,13 @@ forkProcess(HsStablePtr *entry
}
RELEASE_LOCK(&sched_mutex);
+ cap->suspended_ccalling_tasks = NULL;
+
#if defined(THREADED_RTS)
// wipe our spare workers list.
cap->spare_workers = NULL;
+ cap->returning_tasks_hd = NULL;
+ cap->returning_tasks_tl = NULL;
#endif
cap = rts_evalStableIO(cap, entry, NULL); // run the action