summaryrefslogtreecommitdiff
path: root/rts/Schedule.c
diff options
context:
space:
mode:
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
}