David, > On Fri, 2005-08-05 at 14:49 +0200, Michael Kerrisk wrote: > > If I change your program to do something like the above, I also > > do not see a message from the handler -- i.e., it is not being > > called, and I'm pretty sure it should be. > > Hm, yes. What happens is we come back out of the select() immediately > because of the pending signal, but on the way back to userspace we put the > old signal mask back... so by the time we check for it, there _is_ no > (unblocked) signal pending. > > If it's mandatory that we actually call the signal handler,
I'm just about to go off on holiday, and don't have a chance to pull up all the relevant standards details at them moment. However, I'm fairly sure that the signal handler should be called. (Try running a modified version of my program on Solaris 10 or the Unix-03 conversion of AIX (5.3?).) > then we need to > play tricks like sigsuspend() does to leave the old signal mask on the > stack frame. That's a bit painful atm because do_signal is different > between architectures. Yes, I'd say the behaviour should in fact be like what sigsuspend() does. Cheers, Michael - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/