Hi there
I've noticed that the standard "log/run" logging subprocess doesn't seem
that reliable since moving to CentOs-6 64bit from previous CentOs 32bit
environments. It is always fine after a reboot, but if we ever need to
"svc -t" qmail/dnscache/tinydns, it is fairly likely it will break
logging - which basically immediately breaks the application as it
rapidly blocks once the logging stops flushing out
Running a strace against the parent (eg qmail-start) shows it's sitting
on "starting..." - demonstrating that it has sent that to stdout, but
the multilog process hasn't picked it up. Disabling the service and
running it direct from a terminal shows it all works fine - the logging
goes to the screen and everyone is happy. I have had to hack it to stop
using the "log/run" system - eg instead of
#qmail/run
exec qmail-start "$aliasempty"
#qmail/log/run
exec setuidgid qmaillog splogger qmail
I have
#qmail/run
exec qmail-start "$aliasempty" 2>&1|setuidgid qmaillog splogger qmail
and that works fine. So I've just replaced one way of doing pipes with
another - they should both work reliably and yet they don't?
Has anyone else run into this? Any ideas how to fix this?
Thanks
PS: I've also seen something similar with some perl scripts I've written
that via "$|=1" used to write to stdout in a similar way to "tail -f".
The script on 32bit CentOS worked fine, but on 64bit CentOS6 blocks and
the data comes through in chunks instead of line at a time. This seems
to imply there has been a fundamental change in which the 32bit and
64bit systems are flushing? May be a red herring, but maybe not
--
Cheers
Jason Haar
Information Security Manager, Trimble Navigation Ltd.
Phone: +1 408 481 8171
PGP Fingerprint: 7A2E 0407 C9A6 CAF6 2B9F 8422 C063 5EBB FE1D 66D1
I've noticed that the standard "log/run" logging subprocess doesn't seem
that reliable since moving to CentOs-6 64bit from previous CentOs 32bit
environments. It is always fine after a reboot, but if we ever need to
"svc -t" qmail/dnscache/tinydns, it is fairly likely it will break
logging - which basically immediately breaks the application as it
rapidly blocks once the logging stops flushing out
Running a strace against the parent (eg qmail-start) shows it's sitting
on "starting..." - demonstrating that it has sent that to stdout, but
the multilog process hasn't picked it up. Disabling the service and
running it direct from a terminal shows it all works fine - the logging
goes to the screen and everyone is happy. I have had to hack it to stop
using the "log/run" system - eg instead of
#qmail/run
exec qmail-start "$aliasempty"
#qmail/log/run
exec setuidgid qmaillog splogger qmail
I have
#qmail/run
exec qmail-start "$aliasempty" 2>&1|setuidgid qmaillog splogger qmail
and that works fine. So I've just replaced one way of doing pipes with
another - they should both work reliably and yet they don't?
Has anyone else run into this? Any ideas how to fix this?
Thanks
PS: I've also seen something similar with some perl scripts I've written
that via "$|=1" used to write to stdout in a similar way to "tail -f".
The script on 32bit CentOS worked fine, but on 64bit CentOS6 blocks and
the data comes through in chunks instead of line at a time. This seems
to imply there has been a fundamental change in which the 32bit and
64bit systems are flushing? May be a red herring, but maybe not
--
Cheers
Jason Haar
Information Security Manager, Trimble Navigation Ltd.
Phone: +1 408 481 8171
PGP Fingerprint: 7A2E 0407 C9A6 CAF6 2B9F 8422 C063 5EBB FE1D 66D1