Free full_prog_argv at exit, closing a memory leak
[ghc-hetmet.git] / rts / RtsStartup.c
index 1c39cf8..afa38aa 100644 (file)
@@ -17,6 +17,7 @@
 
 #include "sm/Storage.h"
 #include "RtsUtils.h"
+#include "Prelude.h"
 #include "Schedule.h"   /* initScheduler */
 #include "Stats.h"      /* initStats */
 #include "STM.h"        /* initSTM */
@@ -164,8 +165,8 @@ hs_init(int *argc, char **argv[])
      * 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)runIO_closure);
+    getStablePtr((StgPtr)runNonIO_closure);
     getStablePtr((StgPtr)stackOverflow_closure);
     getStablePtr((StgPtr)heapOverflow_closure);
     getStablePtr((StgPtr)runFinalizerBatch_closure);
@@ -337,6 +338,9 @@ hs_exit_(rtsBool wait_foreign)
     
     OnExitHook();
 
+    // Free the full argv storage
+    freeFullProgArgv();
+
 #if defined(THREADED_RTS)
     ioManagerDie();
 #endif