Re: cvs checkout fails in directory that can be accessed via both textmode and binmode mounts

2004-06-04 Thread Jacek Trzmiel

Hi Pierre,

 You have exposed an old bug in Cygwin.
[...]
 I am wondering why the bug is not exposed in 1.5.9
 Care to strace it?

Well, the same thing happens in:
cygwin 1.5.9 / cvs 1.11.6-3
cygwin 1.5.5 / cvs 1.11.6-3

I guess that I either checked out this directory somewhere else and
moved it later or checked out in bin mode and converted endlines by hand
or used even older version of cygwin/cvs (I don't remember, it was year
ago).

cvs co did work differently in 1.5.10 because this bug was masked by
other one.  It has been reexposed in 20040530 snapshot.

Best regards,
Jacek.

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: cvs checkout fails in directory that can be accessed via both textmode and binmode mounts

2004-06-03 Thread Jacek Trzmiel

Jacek Trzmiel wrote:
 $ mkdir /testmnt/cygwin/test
 $ cd /testmnt/cygwin/test
 $ cvs -d /testmnt/cvsrep co prj
 : No such file or directoryirectory /testmnt/cvsrep/prj
 cvs checkout: skipping directory prj

Some additional info:

cygwin 1.5.10-3:
$ cvs -d /testmnt/cvsrep co prj

Checkout does work, but all files are created with unix endlines (on
textmode mount).



20040530 snapshot:
$ cvs -d /testmnt/cvsrep co prj

Error message displayed (there is lone CR at the end of path):
 cvs checkout: cannot open directory /testmnt/cvsrep/prjCR: No such file or 
 directory
 cvs checkout: skipping directory prj

Some files are created in /testmnt/cygwin/test/CVS, and they have
windows endlines.



20040530 snapshot:
Same command run as above, but preceded by strace:
$ strace cvs -d /testmnt/cvsrep co prj

Checkout does work like in 1.5.10-3 version (no errors displayed, unix
endlines in all files).  Heisenbug?


Regards,
Jacek.

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: cvs checkout fails in directory that can be accessed via both textmode and binmode mounts

2004-06-03 Thread Pierre A. Humblet
On Thu, Jun 03, 2004 at 07:49:15PM +0200, Jacek Trzmiel wrote:
 
 Jacek Trzmiel wrote:
  $ mkdir /testmnt/cygwin/test
  $ cd /testmnt/cygwin/test
snip
 
 20040530 snapshot:
 Same command run as above, but preceded by strace:
 $ strace cvs -d /testmnt/cvsrep co prj
 
 Checkout does work like in 1.5.10-3 version (no errors displayed, unix
 endlines in all files).  Heisenbug?

In fact that's normal. When cygwin starts under strace it only knows
the Windows current directory. In your (strange) environment, that directory
can be mapped to two different Posix directories, one in bin mode and
one in text mode. Cygwin doesn't know which one you mean to be in.

Please try 
cd /
strace -o trace.txt sh -c cd /testmnt/cygwin/test; cvs something
choosing a something that displays the problem without
generating a huge trace.

Pierre

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: cvs checkout fails in directory that can be accessed via both textmode and binmode mounts

2004-06-03 Thread Pierre A. Humblet
Jacek Trzmiel wrote:
 
 Hi Pierre,
 
  In fact that's normal. When cygwin starts under strace it only knows
  the Windows current directory.
 
 Thanks for info.
 
  Please try
  cd /
  strace -o trace.txt sh -c cd /testmnt/cygwin/test; cvs something
  choosing a something that displays the problem without
  generating a huge trace.
 
 Attached result of:
 [EMAIL PROTECTED] /
 $ strace -o ~/strace2.out sh -c cd /testmnt/cygwin/test; cvs -d
 /testmnt/cvsrep co prj
 : No such file or directoryirectory /testmnt/cvsrep/prj
 cvs checkout: skipping directory prj

You have exposed an old bug in Cygwin.
This is what happens

  245  146689 [main] cvs 696 open: open (./CVS/Entries, 0x602)

   65  146754 [main] cvs 696 normalize_posix_path: src ./CVS/Entries

   62  146816 [main] cvs 696 cwdstuff::get: posix /testmnt/cygwin/test/prj


CVS/Entries is opened in text mode and  /testmnt/cvsrep/prj is written to it

   65  156719 [main] cvs 696 open: open (., 0x0)

   68  156787 [main] cvs 696 normalize_posix_path: src .

   60  156847 [main] cvs 696 cwdstuff::get: posix /testmnt/cygwin/test/prj

   61  158197 [main] cvs 696 open: 6 = open (., 0x0)


   63  158260 [main] cvs 696 chdir: dir '/home/sc0rp'


   62  160106 [main] cvs 696 chdir: 0 = chdir() cygheap-cwd.posix '/test/prj' native 
'c:\cygwin\test\prj'

   61  160167 [main] cvs 696 fchdir: 0 = fchdir (6)


The bug is that an fchdir does a chdir to the Windows path,
which gets mapped to the wrong Posix path.

   67  196039 [main] cvs 696 open: open (CVS/Entries, 0x0)

   62  196101 [main] cvs 696 normalize_posix_path: src CVS/Entries

   60  196161 [main] cvs 696 cwdstuff::get: posix /test/prj


This time CVS/Entries is opened in binary mode and the filename
is read with a final \r

The fix is easy.

I am wondering why the bug is not exposed in 1.5.9
Care to strace it? 

Pierre

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/