untarring symlinks with ../ fails randomly, silghtly OT
Ryan Johnson
ryan.johnson@cs.utoronto.ca
Tue Jul 5 12:21:00 GMT 2011
On 05/07/2011 8:10 AM, Corinna Vinschen wrote:
> On Jul 4 12:46, Corinna Vinschen wrote:
>> On Jul 4 11:15, Wolf Geldmacher wrote:
>>> As an aside:
>>> I also used to have some trouble with "rm -rf" of a directory
>>> hierarchy failing more or less reproducibly (like: 80% of the
>>> time) because files were presumably still "in use". Repeating
>>> the command several times would succeed, though.
>>>
>>> Downgrading from cygwin1.dll/1.7.9.1 to cygwin1.dll/1.7.8.1
>>> seems to have solved that issue as well - still have to see
>>> the first "retry to delete".
>>>
>>> This may or may not be related to the original report, as it also reeks
>>> of a race condition during file/directory operations.
>> I can neither reproduce the tar problem, nor can I reprocude the rm
>> problem. I tried this under 2008R2 which is basically the same as your
>> W7-64 bit. I used local and remote drives to test the issue but to no
>> avail.
> Finally I managed to reproduce the problem and now I see what happens.
>
> Windows does not write back the file change timestamp unless the file
> buffers are flushed. This usually occurs at close time. In contrast to
> POSIX specifications the timestamps are *not* automatically updated when
> a call to fetch file metadata is performed.
>
> Here's what tar does when creating the symlink:
>
> 1. create file with 000 permissions
> 2. fstat
> 3. close file
> [...]
> 4. stat file
> 5. if fstat.st_ctime != stat.st_ctime ==> symlink placeholder has been
> overwritten.
>
> The problem is that the call to fstat on the opened handle gets some
> value of the change time timestamp, but the subsequent close changes
> the timestamp again.
Wow. That must have been one hairy debug session... my hat goes off to you!
Ryan
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list