Control.Exception.unblock wasn't unblocking exceptions
[ghc-hetmet.git] / rts / RtsStartup.c
index 0406ae6..3fef259 100644 (file)
@@ -390,6 +390,12 @@ hs_exit(void)
     // also outputs the stats (+RTS -s) info.
     exitStorage();
     
+    /* initialise the stable pointer table */
+    exitStablePtrTable();
+
+    /* free hash table storage */
+    exitHashTable();
+
 #ifdef RTS_GTK_FRONTPANEL
     if (RtsFlags.GcFlags.frontpanel) {
        stopFrontPanel();
@@ -453,6 +459,8 @@ shutdownHaskellAndExit(int n)
 static int exit_started=rtsFalse;
 #endif
 
+void (*exitFn)(int) = 0;
+
 void  
 stg_exit(int n)
 { 
@@ -465,5 +473,7 @@ stg_exit(int n)
   IF_PAR_DEBUG(verbose, debugBelch("==-- stg_exit %d on [%x]...", n, mytid));
   shutdownParallelSystem(n);
 #endif
+  if (exitFn)
+    (*exitFn)(n);
   exit(n);
 }