diff options
author | Alexander Vershilov <alexander.vershilov@gmail.com> | 2016-12-02 14:32:48 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2016-12-02 15:29:15 -0500 |
commit | 895a131f6e56847d9ebca2e9bfe19a3189e49d72 (patch) | |
tree | 0b54a54e22104ccf5b790a02448f6fb6875812a2 /includes | |
parent | f46369b8a1bf90a3bdc30f2b566c3a7e03672518 (diff) | |
download | haskell-895a131f6e56847d9ebca2e9bfe19a3189e49d72.tar.gz |
Install toplevel handler inside fork.
When rts is forked it doesn't update toplevel handler, so UserInterrupt
exception is sent to Thread1 that doesn't exist in forked process.
We install toplevel handler when fork so signal will be delivered to the
new main thread.
Fixes #12903
Reviewers: simonmar, austin, erikd, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2770
GHC Trac Issues: #12903
Diffstat (limited to 'includes')
-rw-r--r-- | includes/RtsAPI.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/includes/RtsAPI.h b/includes/RtsAPI.h index 3b6e1dc117..4dccb84fd2 100644 --- a/includes/RtsAPI.h +++ b/includes/RtsAPI.h @@ -282,6 +282,10 @@ void rts_evalIO (/* inout */ Capability **, /* in */ HaskellObj p, /* out */ HaskellObj *ret); +void rts_evalStableIOMain (/* inout */ Capability **, + /* in */ HsStablePtr s, + /* out */ HsStablePtr *ret); + void rts_evalStableIO (/* inout */ Capability **, /* in */ HsStablePtr s, /* out */ HsStablePtr *ret); |