Bug-report:rsync may hung if time jumps backwards

yhu2 yadi.hu at windriver.com
Mon Nov 24 18:23:47 MST 2014


Any progress?

On 11/20/2014 09:57 AM, yhu2 wrote:
>
> Thanks your reply, after test again, both Fixes bug 9789 and rsync 
> 3.1.0 doesn't resolve this bug.
>
> when the test script was called as background, I still saw rsync 
> hanged since tdiff variable is used.
>
> could you please try it again?
>
> while [ 1 ]
> do
> date -s "2012-10-30 06:28:04"
> date -s "2014-11-04 17:13:04"
> done
>
>
>
>
>
>
>
> On 11/19/2014 10:10 PM, devzero at web.de wrote:
>> Hi,
>>
>> it seems that one already has been fixed in 3.1.0, see
>>
>> https://bugzilla.samba.org/show_bug.cgi?id=9789
>>
>> and
>>
>> https://git.samba.org/?p=rsync.git;a=commit;h=2dc2070992c00ea6625031813f2b6c886ddc3ade 
>>
>>
>> you are still using 2.6.9 ? that`s rather old (~ 8yrs?) and may have 
>> bugs and security issues already being fixed.
>>
>> regards
>> roland
>>
>>
>>> List:       rsync
>>> Subject:    Bug-report:rsync may hung if time jumps backwards
>>> From:       yhu2 <yadi.hu () windriver ! com>
>>> Date:       2014-11-17 6:44:25
>>> Message-ID: 54699949.1020503 () windriver ! com
>>> [Download message RAW]
>>>
>>> Hello eveyone!
>>>
>>> According to below reproduce steps,you could observe a rsync hang:
>>>
>>> 1:configure and startup rsync service and
>>>
>>> mkdir /root/a
>>> mkdir /root/b
>>> dd if=/dev/zero of=/root/b/1 bs=1M count=1
>>> dd if=/dev/zero of=/root/b/2 bs=1M count=1
>>> dd if=/dev/zero of=/root/b/3 bs=1M count=1
>>> dd if=/dev/zero of=/root/b/4 bs=1M count=1
>>> dd if=/dev/zero of=/root/b/5 bs=1M count=1
>>>
>>>
>>> 2: start testcase
>>>
>>> ./change-time-loop.sh > /dev/null &
>>> ./rsync-loop.sh
>>>
>>>
>>>
>>> After applying this patch ,this issue went away.
>>>
>>>
>>> --- rsync-2.6.9/BUILD/rsync-2.6.9/util.c    2014-11-11
>>> 13:02:11.495609639 +0800
>>> +++ rsync-2.6.9/BUILD/rsync-2.6.9/util.c    2014-11-11
>>> 13:01:37.606569696 +0800
>>> @@ -1174,8 +1174,11 @@
>>>     * Always returns TRUE.  (In the future it might return FALSE if
>>>     * interrupted.)
>>>     **/
>>> +
>>>    int msleep(int t)
>>>    {
>>> +
>>> +#if 0
>>>        int tdiff = 0;
>>>        struct timeval tval, t1, t2;
>>>
>>> @@ -1192,7 +1195,8 @@
>>>            tdiff = (t2.tv_sec - t1.tv_sec)*1000 +
>>>                (t2.tv_usec - t1.tv_usec)/1000;
>>>        }
>>> -
>>> +#endif
>>> +  usleep(t*1000);
>>>        return True;
>>>    }
>>>
>>>
>>> Is it a correct fix? any comments would be appreciated!!!
>>>
>>>
>>>
>>> ["change-time-loop.sh" (application/x-sh)]
>>>
>>> #!/bin/bash
>>>
>>> while [ 1 ]
>>> do
>>> date -s "2012-10-30 06:28:04"
>>> #sleep 3
>>> date -s "2014-11-04 17:13:04"
>>> #sleep 3
>>> done
>>>
>>> ["rsync-loop.sh" (application/x-sh)]
>>>
>>> #!/bin/bash
>>>
>>> while [ 1 ]
>>> do
>>> rsync -avz --password-file=/root/my.secrets /root/b 
>>> root at 127.0.0.1::logs
>>> rm /root/a/* -rf
>>> done
>>>
>>>
>>> -- 
>>> Please use reply-all for most replies to avoid omitting the mailing 
>>> list.
>>> To unsubscribe or change options: 
>>> https://lists.samba.org/mailman/listinfo/rsync
>>> Before posting, read: 
>>> http://www.catb.org/~esr/faqs/smart-questions.html
>>>
>



More information about the rsync mailing list