http://bugzilla.spamassassin.org/show_bug.cgi?id=4237
------- Additional Comments From [EMAIL PROTECTED] 2005-04-01 14:27 -------
attachment 2304 from bug 3625 did not adequately address the problems I was
seeing for several reasons. On my systems, syslog-ng does not send a SIGPIPE
when it reloads. The eval syslog() does not return any errors even on failure
because when Sys::Syslog falls back on /dev/syslog, $! is flushed. Also, the
eval does not get any response from syslog() which is designed to be quiet and
set $! if an error occurred. I like the idea of setting
$main::INHIBIT_LOGGING_IN_SIGCHLD_HANDLER around the syslog() call, but the
strace (attachment 2746) shows that $main::INHIBIT_LOGGING_IN_SIGCHLD_HANDLER is
set back to 0 ("inhibit going 0\n") and the rest of logmsg_syslog() is finished
before the SIGCHLD is seen.
I considered setting $main::INHIBIT_LOGGING_IN_SIGCHLD_HANDLER to 0 only when no
errors are found after syslog(). But it seems that when openlog() passes the
'cons' logopt, no errors are generated. This is even true if /dev/console is
not writable. I notice that the Sys::Syslog bundled with perl 5.8.4 (and
probably earlier versions) ignores the 'cons' logopt and always tries to fall
back on /dev/console. This means the effectiveness of my patch may be limited
to perl 5.6.1. I think further examination of Sys::Syslog error
handling/reporting under later perl versions is warranted. Especially in
combination with syslog-ng.
If you have any questions, please feel free to ask. I will also be idling on
FreeNode in #SpamAssassin for the next few days.
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.