[syslog-ng]Re: syslog-ng dying randomly?

Balazs Scheidler bazsi@balabit.hu
Mon, 27 May 2002 17:38:00 +0200


On Wed, May 22, 2002 at 02:53:00PM +0200, Balazs Scheidler wrote:
> On Mon, May 20, 2002 at 11:17:23AM -0400, John Morrissey wrote:
> > I don't mean to be a bother, but do you have anything further on this,
> > Bazsi?
> 
> sorry no news. I wasn't able to reproduce the problem, and this makes it
> very difficult to hunt the bug. And I didn't have too much time lately.

Being unable to reproduce the problem, I tried to locate the problems:

I made two patches, one against syslog-ng the other against libol, please
check if these fixes your problems.

/* this is against libol/src/io.c */
diff -u -r1.27 io.c
--- io.c	21 Mar 2002 11:32:35 -0000	1.27
+++ io.c	27 May 2002 15:35:17 -0000
@@ -238,7 +238,9 @@
 					WRITE_FD(fd);
 				else {
 					verbose("io_iter(): POLLHUP on inactive fd!\n");
-					close_fd(fd, CLOSE_EOF);
+					
+					/* we have no chance to flush if POLLHUP was received, therefore closekill immediately */
+					closekill_fd(fd, CLOSE_EOF);
 				}
 				continue;
 			}


/* this against syslog-ng/src/afinet.c */
diff -u -r1.17 afinet.c
--- src/afinet.c	26 Apr 2002 09:43:54 -0000	1.17
+++ src/afinet.c	27 May 2002 15:37:19 -0000
@@ -536,7 +536,8 @@
 {
 	CAST(afinet_dest, self, c);
 	if (self->conn_fd) {
-		KILL_RESOURCE(&self->conn_fd->super.super);
+		/* KILL_RESOURCE(&self->conn_fd->super.super); */
+		closekill_fd(self->conn_fd);
 		self->conn_fd = NULL;
 	}
 }



-- 
Bazsi
PGP info: KeyID 9AF8D0A9 Fingerprint CD27 CFB0 802C 0944 9CFD 804E C82C 8EB1