summaryrefslogtreecommitdiff
path: root/rts/Schedule.c
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2007-03-22 18:29:00 +0000
committerIan Lynagh <igloo@earth.li>2007-03-22 18:29:00 +0000
commit4cc37e5758909aaec9ede20604ec4f01c04b54ea (patch)
tree66f86e0def7572cd8a460ba2dbb2a0c95e249606 /rts/Schedule.c
parentaba08f650f66a7979b7d8e513f8630663f33f4fb (diff)
downloadhaskell-4cc37e5758909aaec9ede20604ec4f01c04b54ea.tar.gz
Add an --install-signal-handlers=<yes|no> RTS flag; fixes trac #804
Diffstat (limited to 'rts/Schedule.c')
-rw-r--r--rts/Schedule.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/rts/Schedule.c b/rts/Schedule.c
index e328b5b8cf..fa8a65128a 100644
--- a/rts/Schedule.c
+++ b/rts/Schedule.c
@@ -862,7 +862,8 @@ schedulePushWork(Capability *cap USED_IF_THREADS,
static void
scheduleStartSignalHandlers(Capability *cap)
{
- if (signals_pending()) { // safe outside the lock
+ if (RtsFlags.MiscFlags.install_signal_handlers && signals_pending()) {
+ // safe outside the lock
startSignalHandlers(cap);
}
}
@@ -985,7 +986,7 @@ scheduleDetectDeadlock (Capability *cap, Task *task)
* for signals to arrive rather then bombing out with a
* deadlock.
*/
- if ( anyUserHandlers() ) {
+ if ( RtsFlags.MiscFlags.install_signal_handlers && anyUserHandlers() ) {
debugTrace(DEBUG_sched,
"still deadlocked, waiting for signals...");
@@ -2708,7 +2709,9 @@ GetRoots( evac_fn evac )
#if defined(RTS_USER_SIGNALS)
// mark the signal handlers (signals should be already blocked)
- markSignalHandlers(evac);
+ if (RtsFlags.MiscFlags.install_signal_handlers) {
+ markSignalHandlers(evac);
+ }
#endif
}