|
cosign-discuss at umich.edu
|
general discussion of cosign development and deployment
|
|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Fwd: [Bug libc/671] New: It appears syslog can go into deadlock when it receives a signal where the signal handler also syslogs]
On 15 Jan 2005, at 21:32, Brett Lomas wrote:
FYI, I just reported this bug, because I was seeing it in the cosign
daemon when using the replication and stressing it.
I have removed all of the sysloging in pusherchld to stop pusherparent
from going into deadlock, at least until i hear back on this.
We noticed this problem some time ago in another project (radmind) and
have been fixing all of our projects since. The CVS HEAD version of
cosign has fixed the problem by removing all "interesting" code from
all signal handlers. See:
http://cvs.web.itd.umich.edu/horde/chora/cvs.php?f=cosign/daemon/
pusher.c
Revision 1.35. BTW, I don't think this is a bug in libc. See:
http://www.opengroup.org/onlinepubs/009695399/functions/sigaction.html
"Application Usage." There is a specific prohibition against calling
non-reentrant functions from a signal handler. Examples of
non-reentrant functions include malloc/free and stdio. While syslog is
not specifically mentioned, syslod is not required to be reentrant, and
it works an awful lot like printf.
:wes
|