[syslog-ng]fopen fails under load on Solaris, HUP doesn't work

Ryan Moon syslog-ng@lists.balabit.hu
Tue, 22 Jul 2003 19:25:53 -0700 (PDT)

Hi all,

I'm running version 1.6.0rc3 of syslog-ng on Solaris 2.6 and I have a
problem where a HUP signal is not correctly processed due to
limitations in the Solaris stdio library.

I've traced this down to the use of fopen in make_syslog_config() in
cfgfile.c. When the server is under load (several hundred TCP connections
from clients), the HUP is not processed because fopen() does not work
when it receives a file descriptor from open() above 255. The fopen()
fails and the rest of the actions to be performed on a HUP are skipped. I
see that the fopen is used because of the fread and fwrite calls in
cfg-lex.c. Is there any way that lex/flex could be configured to use
read/write instead of fread/fwrite, and the call to fopen in cfgfile.c
replaced with open? I really don't want to restart syslog-ng every time I
need to rotate logs, as the overhead is too high. I'd much rather just HUP
so that I can keep the client TCP connections alive via the keep-alive

Thank you,

Ryan Moon