SIGCHLD SIG_IGN, then wait - warning messages
Hardy Merrill
hmerrill at redhat.com
Thu Jul 24 23:09:48 EST 2003
What is the status on this? Is it being considered, or just
ignored? Some (any) response would be appreciated :)
If access to the bug is an issue, I can attach it - just let
me know.
Thanks.
--
Hardy Merrill
Red Hat, Inc.
Hardy Merrill [hmerrill at redhat.com] wrote:
> Rsync maintainers please review rsync bug
>
> https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=98740
>
> 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
> activated.
> -----------------------------
>
> 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 my.server.com::test/one /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
> [test]
> 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 (3.3.1.3)
> 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);
> #endif
> -----------------------------
>
> 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.
>
> Thanks.
>
> --
> Hardy Merrill
> Red Hat, Inc.
> --
> To unsubscribe or change options: http://lists.samba.org/mailman/listinfo/rsync
> Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html
More information about the rsync
mailing list