diff options
author | Ian Lynagh <igloo@earth.li> | 2007-03-22 18:29:00 +0000 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2007-03-22 18:29:00 +0000 |
commit | 4cc37e5758909aaec9ede20604ec4f01c04b54ea (patch) | |
tree | 66f86e0def7572cd8a460ba2dbb2a0c95e249606 /rts/Schedule.c | |
parent | aba08f650f66a7979b7d8e513f8630663f33f4fb (diff) | |
download | haskell-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.c | 9 |
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 } |