Subject: Re: very strange error message from ntpd upon running cvs (?)
To: Frank Kardel <kardel@netbsd.org>
From: Andrew Doran <ad@netbsd.org>
List: current-users
Date: 02/18/2007 20:46:44
On Sat, Feb 17, 2007 at 07:54:33PM +0000, Andrew Doran wrote:

> On Sat, Feb 17, 2007 at 08:47:33PM +0100, Frank Kardel wrote:
> 
> > >>Feb 13 22:33:22 dexamyl ntpd[1243]: sigio_handler: 
> > >>sigio_handler_active != 0
> [...]
> > When ntpd logs this message, then ntpd's assumption that the SIGIO 
> > handler is not called
> > again while SIGIO is being handled is violated. This situation will 
> > definitely cause
> > confusion within ntpd io engine. If this occurs it is definitely a 
> > violation of signal semantics.
> > 
> > To quote sigaction(2):
> >     Signal routines execute with the signal that caused their invocation
> >     blocked, but other signals may yet occur.
> > 
> > Thus recursive signal handler invocations must not occur while a signal 
> > is handled
> > (unless something fiddles with the signal mask which ntpd doesn't in 
> > that code path).
> > 
> > It needs to be checked whether -current signal semantics are still 
> > matching the documentation.
> 
> -current should still behave like this. Presumably there is a bug somewhere,
> either in the MI sendsig(), or in the MD signal delivery routines. I'll be
> looking into this one shortly.

This was indeed the case, the amd64 signal delivery routines were neglecting
to reset the mask. Thank you to Quentin Garnier for spotting the problem.

Blair, could you confirm the problem no longer exists when you have a
moment?

Thanks,
Andrew