This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: TCP/IP 1.3.1 connect() never returns
- To: ecos-discuss at sourceware dot cygnus dot com
- Subject: Re: [ECOS] TCP/IP 1.3.1 connect() never returns
- From: Hugo Tyson <hmt at redhat dot com>
- Date: 23 Oct 2000 14:17:08 +0100
- Newsgroups: cygnus.sourceware.ecos.d
- Organization: Red Hat UK
- References: <2d.2655e3b.27221093@aol.com>
- Reply-To: ecos-discuss at sources dot redhat dot com
AshCan@aol.com writes:
> Occasionally connect() does not return. I cannot find
> where it got stuck as I continue to start and stop
> my emulator hoping to be sitting at a yield or in some
> loop.
>
> My other threads, cyg_netint thread and ethernet ISR
> are still running.
>
> If important, it is a SOCK_STREAM socket.
>
> Has anyone had this problem and know how to avoid it?
There have been a couple of race conditions fixed in the select() code that
could leave netly stuff just hanging as you describe; available from
anoncvs.
There has also been a fix to make the network time (ktime) valid, and more
recently a fix to make that time start at 1S - because the routing code
"knows" that a time with a secs part of zero cannot possibly be valid ;-)
So doing a connect within the first second of the kernel clock running
would just time out. Also should be available from anoncvs.
Finding *just* these changes and applying to the net code that went along
with 131 might not be easy; a new kernel is required for some of the select
changes too. Switch to using the whole anoncvs rather than 131?
- Huge