• Simon Marlow's avatar
    Rewrite of signal-handling (ghc patch; see also base and unix patches) · 7ed3f755
    Simon Marlow authored
    The API is the same (for now).  The new implementation has the
    capability to define signal handlers that have access to the siginfo
    of the signal (#592), but this functionality is not exposed in this
    patch.
    
    #2451 is the ticket for the new API.
    
    The main purpose of bringing this in now is to fix race conditions in
    the old signal handling code (#2858).  Later we can enable the new
    API in the HEAD.
    
    Implementation differences:
    
     - More of the signal-handling is moved into Haskell.  We store the
       table of signal handlers in an MVar, rather than having a table of
       StablePtrs in the RTS.
    
     - In the threaded RTS, the siginfo of the signal is passed down the
       pipe to the IO manager thread, which manages the business of
       starting up new signal handler threads.  In the non-threaded RTS,
       the siginfo of caught signals is stored in the RTS, and the
       scheduler starts new signal handler threads.
    7ed3f755
RtsStartup.c 14.3 KB