On Sat, Oct 29, 2011 at 12:18 PM, Brian Johnson <
[email protected]> wrote:

>From http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Signals:
>
> "When the interrupt signal is received, the default behaviour of the
> runtime is to attempt to shut down the Haskell program gracefully. It does
> this by calling interruptStgRts() in 
> rts/Schedule.c<http://hackage.haskell.org/trac/ghc/browser/rts/Schedule.c>
>  (see 
> Commentary/Rts/Scheduler#ShuttingDown<http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Scheduler#ShuttingDown>).
> If a second interrupt signal is received, then we terminate the process
> immediately; this is just in case the normal shutdown procedure failed or
> hung for some reason, the user is always able to stop the process with two
> control-C keystrokes"
>

On further thought, there is something sensible here: the RTS might crash
while trying to exit.  I propose, for POSIX environments, the following
change to SIGINT handling:

* SIGINT is transformed into UserInterrupt during normal program execution
* Once the RTS is committed to exiting, it resets the signal handler for
SIGINT so that any additional control-c causes an immediate exit

Makes sense?

Brian
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to