[syslog-ng] Segmantation fault
Balazs Scheidler
bazsi at balabit.hu
Sat Oct 21 22:44:12 CEST 2006
On Sat, 2006-10-21 at 21:42 +0200, Balazs Scheidler wrote:
> On Sat, 2006-10-21 at 19:44 +0600, Sergey N. Romanov wrote:
> > Hi there,
> >
> > I have syslog-ng 2.0rc3 on FreeBSD 5.4.
> >
>
> One of the leak fixes in 2.0rc2 introduced the problem, 2.0rc1 should be
> safe and I'm working on a solution.
I have now committed the patch below which should fix the problem (and another
unrelated one I've found while testing my fix) It should be available in
tomorrow's snapshot as well.
--- orig/src/logwriter.c
+++ mod/src/logwriter.c
@@ -96,10 +96,11 @@ log_writer_fd_prepare(GSource *source,
}
return FALSE;
}
- else if (self->writer->flags & LW_DETECT_EOF)
- self->pollfd.events = G_IO_HUP;
else
self->pollfd.events = 0;
+
+ if (self->writer->flags & LW_DETECT_EOF)
+ self->pollfd.events |= G_IO_HUP | G_IO_IN;
self->flush_waiting_for_timeout = FALSE;
self->pollfd.revents = 0;
return FALSE;
@@ -130,7 +131,7 @@ log_writer_fd_dispatch(GSource *source,
gpointer user_data)
{
LogWriterWatch *self = (LogWriterWatch *) source;
- if (self->pollfd.revents & (G_IO_HUP))
+ if (self->pollfd.revents & (G_IO_HUP | G_IO_IN))
{
msg_error("EOF occurred while idle",
evt_tag_int("fd", self->fd->fd),
@@ -266,8 +267,8 @@ static void
log_writer_broken(LogWriter *self, gint notify_code)
{
/* the connection seems to be broken */
- log_pipe_deinit(&self->super, NULL, NULL);
log_pipe_notify(self->control, &self->super, notify_code, self);
+ log_pipe_deinit(&self->super, NULL, NULL);
}
static gboolean
@@ -389,8 +390,6 @@ log_writer_deinit(LogPipe *s, GlobalConf
g_source_unref(self->source);
self->source = NULL;
}
- log_pipe_unref(self->control);
- self->control = NULL;
if (self->dropped_messages)
stats_orphan_counter(SC_TYPE_DROPPED, self->options->stats_name, &self->dropped_messages);
@@ -452,7 +451,6 @@ log_writer_new(guint32 flags, LogPipe *c
self->queue = g_queue_new();
self->flags = flags;
self->control = control;
- log_pipe_ref(control);
return &self->super;
}
--
Bazsi
More information about the syslog-ng
mailing list