Free full_prog_argv at exit, closing a memory leak
[ghc-hetmet.git] / rts / RtsStartup.c
index 2c1c554..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 */
@@ -29,7 +30,6 @@
 #include "sm/BlockAlloc.h"
 #include "Trace.h"
 #include "Stable.h"
-#include "eventlog/EventLog.h"
 #include "Hash.h"
 #include "Profiling.h"
 #include "Timer.h"
@@ -146,7 +146,7 @@ hs_init(int *argc, char **argv[])
 #endif
 
     /* initTracing must be after setupRtsFlags() */
-#ifdef DEBUG
+#ifdef TRACING
     initTracing();
 #endif
 
@@ -165,15 +165,15 @@ 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);
     getStablePtr((StgPtr)unpackCString_closure);
-    getStablePtr((StgPtr)blockedOnDeadMVar_closure);
+    getStablePtr((StgPtr)blockedIndefinitelyOnMVar_closure);
     getStablePtr((StgPtr)nonTermination_closure);
-    getStablePtr((StgPtr)blockedIndefinitely_closure);
+    getStablePtr((StgPtr)blockedIndefinitelyOnSTM_closure);
 
     /* initialise the shared Typeable store */
     initGlobalStore();
@@ -190,12 +190,6 @@ hs_init(int *argc, char **argv[])
 
     initProfiling1();
 
-#ifdef EVENTLOG
-    if (RtsFlags.EventLogFlags.doEventLogging) {
-        initEventLogging();
-    }
-#endif
-
     /* start the virtual timer 'subsystem'. */
     initTimer();
     startTimer();
@@ -344,6 +338,9 @@ hs_exit_(rtsBool wait_foreign)
     
     OnExitHook();
 
+    // Free the full argv storage
+    freeFullProgArgv();
+
 #if defined(THREADED_RTS)
     ioManagerDie();
 #endif
@@ -421,11 +418,9 @@ hs_exit_(rtsBool wait_foreign)
     if (prof_file != NULL) fclose(prof_file);
 #endif
 
-#ifdef EVENTLOG
-    if (RtsFlags.EventLogFlags.doEventLogging) {
-        endEventLogging();
-        freeEventLogging();
-    }
+#ifdef TRACING
+    endTracing();
+    freeTracing();
 #endif
 
 #if defined(TICKY_TICKY)