[GHC] #2301: Proper handling of SIGINT/SIGQUIT

GHC ghc-devs at haskell.org
Wed Nov 20 21:08:54 UTC 2013


#2301: Proper handling of SIGINT/SIGQUIT
-------------------------------------+-------------------------------------
        Reporter:  duncan            |            Owner:
            Type:  bug               |           Status:  patch
        Priority:  high              |        Milestone:  7.8.1
       Component:                    |          Version:  6.12.3
  libraries/process                  |         Keywords:
      Resolution:                    |     Architecture:  Unknown/Multiple
Operating System:  POSIX             |       Difficulty:  Unknown
 Type of failure:  Incorrect result  |       Blocked By:
  at runtime                         |  Related Tickets:
       Test Case:                    |  #3994,#5766,#7229,#4274,#3318,#1619
        Blocking:                    |
-------------------------------------+-------------------------------------

Comment (by Herbert Valerio Riedel <hvr@…>):

 In [changeset:"a0467f3ee892f5843c1ba98bcb9630e1e5b4863b/process"]:
 {{{
 #!CommitTicketReference repository="process"
 revision="a0467f3ee892f5843c1ba98bcb9630e1e5b4863b"
 Implement delegated control-C handling on Unix (#2301)

 This is a generalisation of the SIGINT-ignoring that system and
 rawSystem do, to allow it to be used via the general createProcess.

 For the gory details of SIGINT handling, see
 http://www.cons.org/cracauer/sigint.html

 We implement the 'WCE' method described there.

 That important feature was only available to system and rawSystem
 (mirroring the C system() behaviour). These functions are very limited
 and indeed deprecated, so we need this feature in general. In particular
 projects like Cabal are suffering because they cannot do this properly
 (or need horrible workarounds copy and pasting much of System.Process
 and using System.Process.Internals).

 The feature is available now via a new delegate_ctlc flag in the
 CreateProcess options record. The use of signal handlers is still a
 little hairy, but probably better than before (for situations where
 there were multiple concurrent calls to system/rawSystem).

 One thing to note is that waitForProcess and getProcessExitCode can now
 throw the UserInterrupt exception.

 This is all documented in the haddock docs (both a short description and
 also the excruciating details).

 Authored-by: Duncan Coutts <duncan at well-typed.com>
 Signed-off-by: Herbert Valerio Riedel <hvr at gnu.org>
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/2301#comment:39>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list