Commit 1494f895 authored by Simon Marlow's avatar Simon Marlow

Add SA_RESTART flag to the timer signal handler.

This seems to be necessary to prevent readline being confused by our
SIGALRM handler.
parent d7d596d0
......@@ -84,7 +84,18 @@ install_vtalrm_handler(TickProc handle_tick)
action.sa_handler = handle_tick;
sigemptyset(&action.sa_mask);
#ifdef SA_RESTART
// specify SA_RESTART. One consequence if we don't do this is
// that readline gets confused by the -threaded RTS. It seems
// that if a SIGALRM handler is installed without SA_RESTART,
// readline installs its own SIGALRM signal handler (see
// readline's signals.c), and this somehow causes readline to go
// wrong when the input exceeds a single line (try it).
action.sa_flags = SA_RESTART;
#else
action.sa_flags = 0;
#endif
return sigaction(ITIMER_SIGNAL, &action, NULL);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment