LOCAL RSYNC command: rsync -rvc /tmp/dir1/ /tmp/dir2/ result: building file list ... rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1pre1] dmesg: rsync[38216]: segfault at 2a36 ip 00000000004209b6 sp 00007fffa6fc7e50 error 6 in rsync[400000+6b000] strace: ... --- SIGCHLD (Child exited) @ 0 (0) --- wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV && WCOREDUMP(s)}], WNOHANG, NULL) = 8792 wait4(-1, 0x7fff1fcd221c, WNOHANG, NULL) = -1 ECHILD (No child processes) ... Works with small amount of files in directory. Does not work with large amount of files in directory. If I compile without the checksum-reading.diff, the binary works fine with both large file sets and small file sets. Interesting part is that I was not even using the "--sumfiles=MODE" option at all when the problems occur, just having the patch applied results in issues. Tested only with 3.1.pre1
Can you give me a backtrace with symbols? I can't get it to fail. You may be able to install a package with debug symbols or build rsync from source and run that version. If you get a core dump, load the core into a debugger (e.g. "gdb /path/rsync /path/core") and attach the backtrace (e.g. "bt").