diff options
author | Simon Marlow <marlowsd@gmail.com> | 2008-10-01 16:44:27 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2008-10-01 16:44:27 +0000 |
commit | cb73be0180baa84ee4bfe2294d110cb440b367fa (patch) | |
tree | 95dfc72a4e84e63630622342e928e7f90aad8123 /rts/RtsStartup.c | |
parent | 2493950abe7896a4e6b1f916d7122c096f5fb852 (diff) | |
download | haskell-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.c | 12 |
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(); |