andy@CSVAX.CALTECH.EDU (Andy Fyfe) (06/19/89)
[running on a sun3, sunos3.5, in a sunview window]
If you try the following:
After the line "old_sigwinch = signal(...);" in 'readline.c'
you add the following test:
if (old_sigwinch == rl_handle_sigwinch)
abort();
then start bash, and hit "break", bash will abort.
The trouble is that rl_handle_sigwinch will call old_sigwinch if it's
not null (or SIG_IGN). And it happily recurses (though I haven't yet
found a way of reproducing this reliably).
In the function "rl_set_signals", we have the following:
old_int = (Function *)signal (SIGINT, rl_signal_handler);
if (old_int == (Function *)SIG_IGN)
signal (old_int, SIG_IGN);
Clearly the final signal is *wrong*.