"Unexplained error code xxx" in rsync-2.5.5
Dave Dykstra
dwd at bell-labs.com
Mon May 13 10:39:21 EST 2002
On Sun, May 12, 2002 at 04:13:51PM +0200, Matthias Kurz wrote:
>
> Hi.
>
> We sometimes/often get such errors. It occures in main.c/client_run().
> I investigated further and found, that the waitpid() in
> main.c/wait_process() exits with -1, errno = ECHILD, which means
> "No children". *status can contain garbage in such cases - but not
> always. It happens under Solaris-2.5.1/SPARC.
> It (ECHILD) also happens on other Solaris versions - but there *status
> seems to be always set to/left at 0, so the error slips through.
The fix at
http://lists.samba.org/pipermail/rsync/2002-February/006371.html
might work for you.
Martin, can you please followup with Tridge to ask him what problem he
was trying to solve with the waitpid() call in the sigchld_handler()?
It's a serious bug.
> I cannot investigate further, because i'm under pressure. So i ask
> you. This is a local copy operation:
> rsync -aC --exclude=README --exclude=Makefile . /u/tmp/bla
> Is there a child process forked for a local copy at all ?
Yes a child process is forked for a local copy too.
> Another problem in main.c/wait_process(). A call to WEXITSTATUS(*status)
> must only happen, when WIFEXITED(*status) returns true.
> Else, WIFSIGNALED(*status) could be true, in which case the process was
> terminated by a signal. One has to extract the signal number using
> WTERMSIG(*stat)... and so on. There is also WIFSTOPPED() and
> WIFCONTINUED().
I think you're right. This code was also put in by Tridge, in version
2.4.5, cvs revision 1.114 of main.c.
Does anybody know of some code from a highly ported open source project
that does this right which we can borrow?
- Dave Dykstra
More information about the rsync
mailing list