I
believe I have found the cause of the unexplained error (code ??) at main.c(line
#). In the version I’m running
2.5.2 (obtained from the Free Software Foundation) the line number is 576. It appears the root cause is related to
a race condition associated with the termination of child
processes.
If the signal handler for SIGCHILD is
executed, as the result of a child termination, before the wait_process
procedure is executed, the status of pid (as passed to wait_process) will not
be available and the waitpid call in wait_process will fail with an ECHILD
error. If however, wait_process
executes first, it will successfully obtain the exit status of pid and the
sigchld_handler can execute, to eliminate zombies, with no adverse affects. Since signal handlers execute
asynchronously there is no way to predict when, if at all, a process will
encounter this problem.
I am providing below proposed new code that should resolve the problem. Certainly I can make these changes within my own environment, but since I would like to remain consistent with the rsync project, I would like to here from someone regarding incorporation of these changes into rsync or an alternative (official) method to fixing this problem.I can be reached at [EMAIL PROTECTED]; [EMAIL PROTECTED]; or drstapl@empirenet.comSincerely,David R. Staples
|
- Re: rsync error: unexplained error David R. Staples
- Re: rsync error: unexplained error jw schultz
- Re: rsync error: unexplained error Dave Dykstra
- Re: rsync error: unexplained error drstaples
- Re: rsync error: unexplained error jw schultz