CVS :pserver: bug -- can't get winsup from Win2k + Cygwin 1.1.8-2

Charles S. Wilson cwilson@ece.gatech.edu
Thu Feb 1 07:13:00 GMT 2001


In Corinna's message on Oct 26, 2000:
  "descriptor is a file, not a socket"
  http://sources.redhat.com/ml/cygwin/2000-10/msg01379.html

she detailed reasons why this error might occur on "mostly Win9x/ME,
seldom NT" systems, given the code that was part of cygwin1.dll at
*that* time.  She then introduced a patch that caused cygwin to use
winsock2 functions instead, in an attempt to avoid the earlier problem. 
AFAIK, that new workaround code is still in the current cygwin1.dll.

She mentioned one drawback, namely: win95 and winnt3.51 do not have
winsock2.  But, you can install winsock2 by using this link (do NOT use
for Win98)
http://www.microsoft.com/windows95/downloads/contents/wuadmintools/s_wunetworkingtools/w95sockets2/default.asp
On win9x, the winsock2 have an unfortunate side effect: it is possible
to get resource leaks with long running programs; all leaks will be
cleaned up on process exit, though.

Now, Win2K was never mentioned.  I do not know why or how the winsock2
functions (which are being used by the latest kernel, as well as all
previous kernels going back to Oct 27, 2000, AFAIK) would fail in the
old "winsock1" way on Win2K.

Steve Hirsh in Dec 1999 (Looonnnggg before Corinna's fix) said the
following about an identical error message ("cvs.exe [checkout aborted]:
writing to server: The descriptor is a file, not a socket") that he
experienced when trying to use a local repository:
> For whatever reason, no one else is reporting this runtime error.  The
> error is coming from a section of code that tries to flush a buffer back
> to the server in client.c of cvs.

After running cvs under gdb to debug the problem, Steve gave a very
thorough analysis here: (note that his problem was unrelated to any
winsock2 issues; yours may be similarly unrelated)
http://sources.redhat.com/ml/cygwin/1999-12/msg00502.html
The basic problem was that Steve was running a VPN client which hijacked
all socket communications, even the loopback one used by cvs to access a
local repository. Others have reported various similar problems with VPN
or PROXY programs.

Henry, I think you're going to have to use gdb and trace through the
program's operation to debug this.  I do not see the problem (Win2Ksp1,
1.1.8, connecting to :pserver:anoncvs@anoncvs.cygnus.com:/cvs/src works
fine), so there's no way I can debug it for you.  Take a good look at
Steve's message referenced above, and set a few breakpoints at the code
he indicates in client.c -- BTW, this means you'll have to download
cvs-1.11.0-1-src.tar.gz and build your own cvs.exe with debugging (-g)
enabled, and don't strip the executable (the distribution version of
cvs.exe is stripped, so it's not readily debuggable).  Note that
/usr/doc/Cygwin/cvs-1.11.0.README contains build instructions. 

--Chuck


"Henry S. Thompson" wrote:
> 
> This appears to be a known bug, and the archives suggest it was fixed,
> however if I try
> 
> > cvs -d :pserver:anoncvs@anoncvs.cygnus.com:/cvs/src checkout winsup
> 
> I get
> 
> cvs [checkout aborted]: writing to server: The descriptor is a file, not a socket
> 
> cvs 1.11 from the cygwin setup distribution
> cygwin 1.1.18-2
> Win2k SP 1
> 
> Help!
> 
> ht
> --
>   Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
>           W3C Fellow 1999--2001, part-time member of W3C Team
>      2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
>             Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk
>                      URL: http://www.ltg.ed.ac.uk/~ht/
> 
> --
> Want to unsubscribe from this list?
> Check out: http://cygwin.com/ml/#unsubscribe-simple

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list