This is the mail archive of the cygwin-developers@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Threaded socket hang in 1.3.20


While running the Python regression test to verify my rebase package
before release, I stumbled across a hang in 1.3.20-1 (and CVS) when
socket() is called from one thread after accept() has been called in
another.

This problem has recently been discussed in the following Cygwin mailing
thread:

    http://cygwin.com/ml/cygwin/2003-02/msg01341.html
    http://cygwin.com/ml/cygwin/2003-02/msg01350.html

The problem was introduced sometime after 1.3.19-1 and before
2003-Feb-01 snapshot.

The attached C++ testcase demonstrates the problem.  In 1.3.20-1, the
program hangs in the call to socket() in the second thread:

    Creating thread for fn1
    fn1 begin
    fn1: calling accept()...
    Creating thread for fn2
    fn2 begin
    fn2: calling socket()...

While in 1.3.19-1, we get the following:

    Creating thread for fn1
    fn1 begin
    fn1: calling accept()...
    Creating thread for fn2
    fn2 begin
    fn2: calling socket()...
    fn2: socket() returned
    fn2: calling connect()...
    fn2: connect returned
    fn2: connect() failed with 111

I'm not sure why connect() fails, because a "telnet localhost 54321"
works just fine.  I'm probably demonstrating my sockets ignorance.

I will try to dig deeper, but I'm hoping that maybe a light bulb will go
on in the meantime.

BTW, does anyone have any snapshots after 1.3.19-1, but before
2003-Feb-01?  If so, please (privately) mail them to me or post a URL.

Thanks,
Jason

-- 
PGP/GPG Key: http://www.tishler.net/jason/pubkey.asc or key servers
Fingerprint: 7A73 1405 7F2B E669 C19D  8784 1AFD E4CC ECF4 8EF6

Attachment: test_socket.cc
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]