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.

Reply via email to