Re: [PATCH] git daemon: avoid calling syslog() from a signal handler

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Sat, 5 Jul 2008, Junio C Hamano wrote:

> Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes:
> 
> > Signal handlers should never call syslog(), as that can raise signals 
> > of its own.
> >
> > Instead, call the syslog() from the master process.
> 
> Earlier parts seem to make sense but I am puzzled by these changes.
> 
> > @@ -929,7 +945,8 @@ static int service_loop(int socknum, int *socklist)
> >  	for (;;) {
> >  		int i;
> >  
> > -		if (poll(pfd, socknum, -1) < 0) {
> > +		i = poll(pfd, socknum, 1);
> > +		if (i < 0) {
> >  			if (errno != EINTR) {
> >  				error("poll failed, resuming: %s",
> >  				      strerror(errno));
> > @@ -937,6 +954,10 @@ static int service_loop(int socknum, int *socklist)
> >  			}
> >  			continue;
> >  		}
> > +		if (i == 0) {
> > +			check_dead_children();
> > +			continue;
> > +		}
> 
> So you will check every 1ms to see if there are new dead children, but why
> is this necessary?

This comes from me not reading the man page for poll() properly.  Of 
course, I want to check every second: syslog timestamps the messages with 
a resolution of 1 second, AFAIR, or at least some of them do.

So if you could just squash in this patch, that would be smashing:

-- snipsnap --
@@ -945,8 +945,8 @@ static int service_loop(int socknum, int *socklist)
 	for (;;) {
 		int i;
 
-		i = poll(pfd, socknum, 1);
+		i = poll(pfd, socknum, 1000);
 		if (i < 0) {
 			if (errno != EINTR) {
 				error("poll failed, resuming: %s",
 				      strerror(errno));

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux