From: | Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com> |
---|---|
To: | PostgreSQL Bugs <pgsql-bugs(at)postgresql(dot)org> |
Subject: | Syslogger tries to write to /dev/null on Windows |
Date: | 2010-04-01 11:10:00 |
Message-ID: | 4BB47F08.9040006@enterprisedb.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
A customer is facing a problem on PostgreSQL 8.3.10 on Windows where the
syslogger process dies mysteriously every few hours under load. I
haven't yet figured out why, but when postmaster tries to respawn
syslogger, it doesn't start up but dies immediately.
The reason the relaunch fails is that in SysLoggerMain we have this:
> /*
> * If we restarted, our stderr is already redirected into our own input
> * pipe. This is of course pretty useless, not to mention that it
> * interferes with detecting pipe EOF. Point stderr to /dev/null. This
> * assumes that all interesting messages generated in the syslogger will
> * come through elog.c and will be sent to write_syslogger_file.
> */
> if (redirection_done)
> {
> int fd = open(NULL_DEV, O_WRONLY, 0);
>
> /*
> * The closes might look redundant, but they are not: we want to be
> * darn sure the pipe gets closed even if the open failed. We can
> * survive running with stderr pointing nowhere, but we can't afford
> * to have extra pipe input descriptors hanging around.
> */
> close(fileno(stdout));
> close(fileno(stderr));
> dup2(fd, fileno(stdout));
> dup2(fd, fileno(stderr));
> close(fd);
> }
NULL_DEV is defined in c.h as "/dev/null", which doesn't work on
windows. We have a port-specific #define DEVNULL which does work, we
should be using that.
Peter Eisentraut inadvertently fixed this for 8.4:
http://archives.postgresql.org/pgsql-committers/2008-12/msg00095.php
by removing NULL_DEV and using always DEVNULL, but back-branches need
that too. I'll leave NULL_DEV as it is just in case it's used by 3rd
party modules, but change the two uses of it to use DEVNULL.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
From | Date | Subject | |
---|---|---|---|
Next Message | Magnus Hagander | 2010-04-01 11:19:30 | Re: Syslogger tries to write to /dev/null on Windows |
Previous Message | Jaime Casanova | 2010-04-01 03:38:43 | Re: BUG #5388: bortdagos |