rsync 2.6.2 appears to hang

Thomas J Pinkl tom at hbsrx.com
Tue May 4 14:25:07 GMT 2004


I've had a long-standing problem syncing my home directory from one 
Linux system (RH Linux 7.3) to another (RH Linux 9).  I am now 
running rsync version 2.6.2 on both ends.  I use ssh as the data 
transport.  The two machines are separated by a VPN over the 
Internet.

What happens is that the sending rsync just appears to hang.  The 
receiving rsync processes are no longer running when I go to look, 
typically the next morning.

I finally managed to capture an strace of the receiving rsync 
processes, which I've attached below.

The child receiver process gets an error return on a write(), 
informs its parent by sending it two error messages, and calls 
exit(11).  The parent receiver process reads the first of the 
two error messages, but not the second.  It handles the SIGCHLD 
signal after read()ing the first error message.  Thereafter, the 
patent's select() no longer includes the file descriptor on which 
(presumably) the second error message is waiting.  And it never 
informs the sending rsync process of the error.

I'm hoping that there's enough information here to allow an rsync 
developer (is Wayne the only one left?) to come up with a fix.

-- cut here --
[pid 9977] memcpy(0x0807ac00, "rity: MIME headers sanitized on xxxxxx\n\tSee http://www.impsec.or", 64) = 0x0807ac00
[pid 9977] memcpy(0x0807ac00, "g/email-tools/sanitizer-intro.html\n\tfor details. $Revision: 1.13", 64) = 0x0807ac00
[pid 9977] memcpy(0x0807ac00, "3 $Date: 2002-01-05 17:09:21-08 \nX-S", 36) = 0x0807ac00
[pid 9977] memcpy(0x40275eb8, "> ABC Data Solutions               Phone: 800-555-3900\n> 123 Main St.
           Fax: 800-555-8908\n> Xxxxxxx, "..., 336) = 0x40275eb8
[pid 9977] write(3, "se a serial interface.\n\n\nThe one thing I'm not sure about is whether or not they will support a\nspecialied printer like a Dymo l"..., 262144 <unfinished ...>
[pid 9977]     SYS_write(3, "se a serial interface.\n\n\nThe one thing I'm not sure about is whether or not they will support a\nspecialied printer like a Dymo l"..., 262144) = -5
[pid 9977] <... write resumed> )                                          = -1
[pid 9977] __errno_location()                                             = 0x40030b00
[pid 9977] __errno_location()                                             = 0x40030b00
[pid 9977] strerror(5)                                                    = "Input/output error"
[pid 9977] asprintf(0x08077584, 0x0806e507, 0x08082a20, 0x0806ede4, 0xbfffd570) = 30
[pid 9977] vsnprintf("write failed on "/v/home/tom/./Mail/synergy-l": Input/output error\n", 1024, "write failed on %s:
%s\n", 0xbfffa458) = 67
[pid 9977] malloc(12)                                                     = 0x08088e40
[pid 9977] malloc(71)                                                     = 0x08091dd8
[pid 9977] memcpy(0x08091ddc, "write failed on "/v/home/tom/./Mail/synergy-l": Input/output error\n", 67) = 0x08091ddc
[pid 9977] write(4, "C", 71 <unfinished ...>
[pid 9977]     SYS_write(4, "C", 71 <unfinished ...>
[pid 9944]     <... SYS__newselect resumed> )                             = 1
[pid 9977]     <... SYS_write resumed> )                                  = 71
[pid 9944] <... select resumed> )                                         = 1
[pid 9977] <... write resumed> )                                          = 71
[pid 9944] __errno_location( <unfinished ...>
[pid 9977] free(0x08091dd8 <unfinished ...>
[pid 9944] <... __errno_location resumed> )                               = 0x40030b00
[pid 9977] <... free resumed> )                                           = <void>
[pid 9944] select(4, 0xbfff9c40, 0, 0, 0xbfff9bb8 <unfinished ...>
[pid 9977] free(0x08088e40 <unfinished ...>
[pid 9944]     SYS__newselect(4, 0xbfff9c40, 0, 0, 0xbfff9bb8 <unfinished ...>
[pid 9977] <... free resumed> )                                           = <void>
[pid 9944]     <... SYS__newselect resumed> )                             = 1
[pid 9977] signal(10, 0x00000001 <unfinished ...>
[pid 9944] <... select resumed> )                                         = 1
[pid 9944] read(3,  <unfinished ...>
[pid 9977]     SYS_rt_sigaction(10, 0xbfffa1e0, 0xbfffa150, 8, 10)        = 0
[pid 9944]     SYS_read(3,  <unfinished ...>
[pid 9977] <... signal resumed> )                                         = 0x08051d50
[pid 9944]     <... SYS_read resumed> "C", 4)                             = 4
[pid 9977] signal(12, 0x00000001 <unfinished ...>
[pid 9944] <... read resumed> "C", 4)                                     = 4
[pid 9944] __errno_location( <unfinished ...>
[pid 9977]     SYS_rt_sigaction(12, 0xbfffa1e0, 0xbfffa150, 8, 12)        = 0
[pid 9944] <... __errno_location resumed> )                               = 0x40030b00
[pid 9977] <... signal resumed> )                                         = 0x08051d80
[pid 9944] select(4, 0xbfff9c40, 0, 0, 0xbfff9bb8 <unfinished ...>
[pid 9977] unlink("Mail/.synergy-l.p8Qrzc" <unfinished ...>
[pid 9944]     SYS__newselect(4, 0xbfff9c40, 0, 0, 0xbfff9bb8 <unfinished ...>
[pid 9977]     SYS_unlink(0xbfffb570, 0, 11, 255, 0x0806dca3 <unfinished ...>
[pid 9944]     <... SYS__newselect resumed> )                             = 1
[pid 9944] <... select resumed> )                                         = 1
[pid 9944] read(3,  <unfinished ...>
[pid 9944]     SYS_read(3, "write failed on "/v/home/tom/./Mail/synergy-l": Input/output error\n", 67) = 67
[pid 9944] <... read resumed> "write failed on "/v/home/tom/./Mail/synergy-l": Input/output error\n", 67) = 67
[pid 9944] memcpy(0xbfff8c94, "write failed on "/v/home/tom/./Mail/synergy-l": Input/output error\n", 67) = 0xbfff8c94
[pid 9944] __errno_location()                                             = 0x40030b00
[pid 9944] select(2, 0, 0xbfff8be0, 0, 0xbfff8b58 <unfinished ...>
[pid 9944]     SYS__newselect(2, 0, 0xbfff8be0, 0, 0xbfff8b58 <unfinished ...>
[pid 9977]     <... SYS_unlink resumed> )                                 = 0
[pid 9977] <... unlink resumed> )                                         = 0
[pid 9977] vsnprintf("rsync error: error in file IO (code 11) at receiver.c(255)\n", 1024, "rsync error: %s (code %d) at %s(%d)\n", 0xbfffa3d8) = 59
[pid 9977] malloc(12)                                                     = 0x08089920
[pid 9977] malloc(63)                                                     = 0x08091dd8
[pid 9977] memcpy(0x08091ddc, "rsync error: error in file IO (code 11) at receiver.c(255)\n", 59) = 0x08091ddc
[pid 9977] write(4, ";", 63 <unfinished ...>
[pid 9977]     SYS_write(4, ";", 63)                                      = 63
[pid 9977] <... write resumed> )                                          = 63
[pid 9977] free(0x08091dd8)                                               = <void>
[pid 9977] free(0x08089920)                                               = <void>
[pid 9977] exit(11 <unfinished ...>
[pid 9977]     SYS_exit_group(11 <unfinished ...>
[pid 9977] +++ exited (status 11) +++
    <... SYS__newselect resumed> )                                        = -514
--- SIGCHLD (Child exited) ---
    waitpid(-1, 0xbfff8834, 1 <unfinished ...>
        SYS_wait4(-1, 0xbfff8834, 1, 0, -1)                               = 9977
    <... waitpid resumed> )                                               = 9977
    waitpid(-1, 0xbfff8834, 1 <unfinished ...>
        SYS_wait4(-1, 0xbfff8834, 1, 0, -1)                               = -10
    <... waitpid resumed> )                                               = -1
    SYS_sigreturn(2, 0xbfff8834, 1, 0, 0xbfff8b58)                        = -4
<... select resumed> )                                                    = -1
__errno_location()                                                        = 0x40030b00
select(2, 0, 0xbfff8be0, 0, 0xbfff8b58 <unfinished ...>
    SYS__newselect(2, 0, 0xbfff8be0, 0, 0xbfff8b58)                       = 0
<... select resumed> )                                                    = 0
__errno_location()                                                        = 0x40030b00
select(2, 0, 0xbfff8be0, 0, 0xbfff8b58 <unfinished ...>
    SYS__newselect(2, 0, 0xbfff8be0, 0, 0xbfff8b58)                       = 0
<... select resumed> )                                                    = 0
__errno_location()                                                        = 0x40030b00
select(2, 0, 0xbfff8be0, 0, 0xbfff8b58 <unfinished ...>
    SYS__newselect(2, 0, 0xbfff8be0, 0, 0xbfff8b58)                       = 0
<... select resumed> )                                                    = 0
__errno_location()                                                        = 0x40030b00

... (repeats indefinitely)
-- end --

-- 
Thomas J. Pinkl
Health Business Systems, Inc.


More information about the rsync mailing list