Bug 10555 - checksum-reading.diff causes rsync to segfault with large amount of files
Summary: checksum-reading.diff causes rsync to segfault with large amount of files
Status: ASSIGNED
Alias: None
Product: rsync
Classification: Unclassified
Component: core (show other bugs)
Version: 3.1.1
Hardware: All All
: P5 major (vote)
Target Milestone: ---
Assignee: Wayne Davison
QA Contact: Rsync QA Contact
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-04-16 18:29 UTC by John Pierman
Modified: 2014-04-19 23:22 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Pierman 2014-04-16 18:29:02 UTC
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
Comment 1 Wayne Davison 2014-04-19 23:22:01 UTC
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").