SIGCHLD SIG_IGN, then wait - warning messages

Hardy Merrill hmerrill at
Wed Jul 23 02:33:14 EST 2003

Rsync maintainers please review rsync bug
The code in question is in socket.c in start_accept_loop.
The user is getting these warning messages:
Jul  8 12:56:59 ftp kernel: application bug: rsync(1051) has SIGCHLD set to
SIG_IGN but calls wait().
Jul  8 12:56:59 ftp kernel: (see the NOTES section of 'man 2 wait'). Workaround
I was able to reproduce that error with rsync server and
client on Red Hat OS's on a fairly consistent basis by
running an rsync server (rsync version 2.5.6 protocol
version 27 from cvs 7/14) from the command line
(rsync --daemon), and connecting with an rsync-2.4.6
client with this command:
    rsync -avv /tmp/rsync_test

I also produced the same error by using the same command
from an rsync-2.5.6 protocol version 26 client.

Here is my /etc/rsyncd.conf file:
log file = /var/log/rsync
        uid = rsync1
        gid = rsync1
        path = /rsync_test
        comment = Rsync Test - Comment
Quoting one of the bug messages,
   "These messages are a warning that rsync is not
    standards compliant with respect to its handling
    of child processes. According to POSIX (
    it is unspecified what happens when SIGCHLD is set
    to SIG_IGN."
This code in socket.c:
        signal(SIGCHLD, SIG_IGN);
        /* we shouldn't have any children left hanging around
           but I have had reports that on Digital Unix zombies
           are produced, so this ensures that they are reaped */
    #ifdef WNOHANG
        while (waitpid(-1, NULL, WNOHANG) > 0);

sets SIGCHLD to SIG_IGN, and *then* waits if WNOHANG is
defined.  It would appear that if there are still children
left to be cleaned up in Digital Unix after setting SIGCHLD
to SIG_IGN, that there might be a bug in Digital Unix that
rsync is coding a fix for.
One coding change could be to change the #ifdef WNOHANG to
a #ifdef <Digital Unix string>, so that only Digital Unix
OS's would include and execute the waitpid.  This would
stop warning messages from being produced.
Hardy Merrill
Red Hat, Inc.

More information about the rsync mailing list