summaryrefslogtreecommitdiff
path: root/rts/RtsStartup.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2008-10-01 16:44:27 +0000
committerSimon Marlow <marlowsd@gmail.com>2008-10-01 16:44:27 +0000
commitcb73be0180baa84ee4bfe2294d110cb440b367fa (patch)
tree95dfc72a4e84e63630622342e928e7f90aad8123 /rts/RtsStartup.c
parent2493950abe7896a4e6b1f916d7122c096f5fb852 (diff)
downloadhaskell-cb73be0180baa84ee4bfe2294d110cb440b367fa.tar.gz
add some more GC roots (fixes conc048, and possibly some others)
Diffstat (limited to 'rts/RtsStartup.c')
-rw-r--r--rts/RtsStartup.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/rts/RtsStartup.c b/rts/RtsStartup.c
index fd84000bba..fbebdb9c41 100644
--- a/rts/RtsStartup.c
+++ b/rts/RtsStartup.c
@@ -225,11 +225,19 @@ hs_init(int *argc, char **argv[])
/* initialise the stable pointer table */
initStablePtrTable();
- /* Add some GC roots (using stable pointers): these are needed by
- * all foreign export stubs, so they have to be treated as
+ /* Add some GC roots for things in the base package that the RTS
+ * knows about. We don't know whether these turn out to be CAFs
+ * or refer to CAFs, but we have to assume that they might.
*/
getStablePtr((StgPtr)base_GHCziTopHandler_runIO_closure);
getStablePtr((StgPtr)base_GHCziTopHandler_runNonIO_closure);
+ getStablePtr((StgPtr)stackOverflow_closure);
+ getStablePtr((StgPtr)heapOverflow_closure);
+ getStablePtr((StgPtr)runFinalizerBatch_closure);
+ getStablePtr((StgPtr)unpackCString_closure);
+ getStablePtr((StgPtr)blockedOnDeadMVar_closure);
+ getStablePtr((StgPtr)nonTermination_closure);
+ getStablePtr((StgPtr)blockedIndefinitely_closure);
/* initialise the shared Typeable store */
initTypeableStore();