From 4e1f1196f1349286c1480c19bd3a000346a120f4 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Tue, 2 Sep 2008 12:45:04 +0000 Subject: [PATCH] FIX #2554: GHC.TopHandler.{runIO,runNonIO} should be GC roots --- rts/RtsStartup.c | 6 ++++++ rts/package.conf.in | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/rts/RtsStartup.c b/rts/RtsStartup.c index f221ad8..fd84000 100644 --- a/rts/RtsStartup.c +++ b/rts/RtsStartup.c @@ -225,6 +225,12 @@ 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 + */ + getStablePtr((StgPtr)base_GHCziTopHandler_runIO_closure); + getStablePtr((StgPtr)base_GHCziTopHandler_runNonIO_closure); + /* initialise the shared Typeable store */ initTypeableStore(); diff --git a/rts/package.conf.in b/rts/package.conf.in index 7ebcbc6..bae12f8 100644 --- a/rts/package.conf.in +++ b/rts/package.conf.in @@ -110,6 +110,8 @@ ld-options: , "-u", "_base_GHCziIOBase_blockedIndefinitely_closure" , "-u", "_base_ControlziExceptionziBase_nestedAtomically_closure" , "-u", "_base_GHCziWeak_runFinalizzerBatch_closure" + , "-u", "_base_GHCziTopHandler_runIO_closure" + , "-u", "_base_GHCziTopHandler_runNonIO_closure" #else "-u", "ghczmprim_GHCziTypes_Izh_static_info" , "-u", "ghczmprim_GHCziTypes_Czh_static_info" @@ -143,6 +145,8 @@ ld-options: , "-u", "base_GHCziIOBase_blockedIndefinitely_closure" , "-u", "base_ControlziExceptionziBase_nestedAtomically_closure" , "-u", "base_GHCziWeak_runFinalizzerBatch_closure" + , "-u", "base_GHCziTopHandler_runIO_closure" + , "-u", "base_GHCziTopHandler_runNonIO_closure" #endif #ifdef LEADING_UNDERSCORE -- 1.7.10.4