rsync 3.00pre6 segfault in add_dirs_to_tree
Ming Zhang
blackmagic02881 at gmail.com
Thu Dec 13 02:44:47 GMT 2007
Hi All
I run rsync in an automated environment and it sometime will crash and
leave a core dump file. from core dump, gdb shows that
gdb) bt
#0 add_dirs_to_tree (parent_ndx=-1, from_flist=0x56c590, dir_cnt=1) at
flist.c:1422
#1 0x0000000000409eab in send_file_list (f=16, argc=-1, argv=0x56c238)
at flist.c:2068
#2 0x0000000000419052 in client_run (f_in=16, f_out=16, pid=-1, argc=1,
argv=0x56c230) at main.c:1033
#3 0x000000000041a09a in main (argc=2, argv=0x56c230) at main.c:1260
(gdb) bt f
#0 add_dirs_to_tree (parent_ndx=-1, from_flist=0x56c590, dir_cnt=1) at
flist.c:1422
file = (struct file_struct *) 0x0
~~~~it crashes at add_dirs_to_tree() when reference a NULL pointer.
i = 2
dp = (int32_t *) 0x2a983f2f28
parent_dp = (int32_t *) 0x0
(gdb) p *((struct file_list *)0x56c590)->sorted[0]
$4 = {dirname = 0x0, modtime = 1197492871, len32 = 4096, mode = 16895,
flags = 5, basename = "."}
(gdb) p *((struct file_list *)0x56c590)->sorted[1]
$5 = {dirname = 0x0, modtime = 1197488045, len32 = 16384, mode = 16832,
flags = 4, basename = "l"}
from the mode, it looks that both of them are directories, so S_ISDIR()
should be 1 and thus "dir_cnt--" should get executed, but later show
dir_cnt is still 1. weired.
(gdb) p *((struct file_list *)0x56c590)->sorted[2]
Cannot access memory at address 0x0
~~~~this is where file become NULL pointer when i is 2.
(gdb) p dir_cnt
$11 = 1
Any idea about what is going on here? I can provide the core dump and
rsync binary or other information if need.
Thanks!
--
Ming Zhang
@#$%^ purging memory... (*!%
http://blackmagic02881.wordpress.com/
http://www.linkedin.com/in/blackmagic02881
--------------------------------------------
More information about the rsync
mailing list