shutdownHaskellAndExit: just do a normal hs_exit() (#5402)
authorSimon Marlow <marlowsd@gmail.com>
Thu, 15 Sep 2016 14:53:00 +0000 (15:53 +0100)
committerSimon Marlow <marlowsd@gmail.com>
Fri, 23 Sep 2016 04:39:31 +0000 (13:39 +0900)
If we want to keep the RTS alive a bit longer by having another
hs_init()/hs_exit() pair in a library that will destruct itself after
main() has exited, then the forced shutdown here thwarts that.

I think we just "fixed" #5402 in the wrong way before, this should be
better.

rts/RtsStartup.c

index 123fb9b..33ffb83 100644 (file)
@@ -466,10 +466,6 @@ void
 shutdownHaskellAndExit(int n, int fastExit)
 {
     if (!fastExit) {
-        // even if hs_init_count > 1, we still want to shut down the RTS
-        // and exit immediately (see #5402)
-        hs_init_count = 1;
-
         // we're about to exit(), no need to wait for foreign calls to return.
         hs_exit_(rtsFalse);
     }