x86_64 Cygwin 1.7.29: possible bug to trace symlink (Win7)

Robert Bu robert_bu@realsil.com.cn
Mon Apr 21 01:59:00 GMT 2014


> On Apr 16 17:47, Corinna Vinschen wrote:
>   > > Below is what I get:
>   > > RS-I9E3U8R4:[~/tmp/test_symlink]>uname -a
>   > > CYGWIN_NT-6.1 RS-I9E3U8R4 1.7.29(0.272/5/3) 2014-04-07 13:46 x86_64
> Cygwin
>   > > RS-I9E3U8R4:[~/tmp/test_symlink]>echo $CYGWIN
>   > > winsymlinks:nativestrict
>   > > RS-I9E3U8R4:[~/tmp/test_symlink]>echo test > test.txt
>   > > RS-I9E3U8R4:[~/tmp/test_symlink]>mkdir dest
>   > > RS-I9E3U8R4:[~/tmp/test_symlink]>cd dest
>   > > RS-I9E3U8R4:[~/tmp/test_symlink/dest]>ln -s ../test.txt test.txt
>   > > RS-I9E3U8R4:[~/tmp/test_symlink/dest]>cd ../
>   > > RS-I9E3U8R4:[~/tmp/test_symlink]>mkdir src
>   > > RS-I9E3U8R4:[~/tmp/test_symlink]>cd src
>   > > RS-I9E3U8R4:[~/tmp/test_symlink/src]>ln -s ../dest dest
>   > > RS-I9E3U8R4:[~/tmp/test_symlink/src]>cd ../
>   > > RS-I9E3U8R4:[~/tmp/test_symlink]>cat src/dest/test.txt
>   > > cat: src/dest/test.txt: No such file or directory
>   >
>   > I can reproduce it now.  I made a mistake when creating the symlinks
>   > the first time, which is, I created them with tcsh.  Tcsh tends to
>   > change relative paths using ".." components to absolute paths on the
>   > command line.  Using plain relative paths, I now see what's going on.
>   >
>   > But it'sa tricky problem.  I don't know how to fix it yet.  I'll
>   > have to think about it, so please be patient.
>
> This is a very interesting problem which (again) shows the downsides of
> the Cygwin path handling, namely the evaluation of the path from right
> to left, contrary to what POSIX demands.  We really have to rewrite this
> code, but that's a lot of work for long and dark winter nights and days,
> not something we can do out of the blue.
>
> Therefore, I created a workaround within the constraints of the current
> code.  Please try the today's snapshot from http://cygwin.com/snapshots/,
> it contains my workaround.
>
This snapshots works as expected.

> Note that in the current configuration we're having a recursion problem.
> If your path consists of more than 15 native symlinks, all of which have
> a ".." path component in the symlink target path, the result will be a
> "no such file or directory" again.  This is pretty unlikely in normal
> life, but can be easily constructed, of course.
>

There are about 10 native symlinks in the repo created git directory. So 
this workaround works for me for now.

Thank you very much.

Regards
Robert

--
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