[ECOS] Re: What causes interrupted network system calls?
Grant Edwards
grant.b.edwards@gmail.com
Wed Oct 28 18:40:00 GMT 2009
On 2009-10-28, Nick Garnett <nickg@ecoscentric.com> wrote:
> Grant Edwards <grant.b.edwards@gmail.com> writes:
>> On 2009-10-28, Nick Garnett <nickg@ecoscentric.com> wrote:
>>> Grant Edwards <grant.b.edwards@gmail.com> writes:
>>>
>>>> 1) in the same situation we never saw EINTR with the previous
>>>> network stack.
>>>
>>> It is probable that the OpenBSD stack totally ignored signals
>>> and therefore wouldn't necessarily do the right thing. The
>>> FreeBSD stack is better integrated with POSIX support.
>>
>> We're not using POSIX support.
>
> In which case there is something else going on. The only place
> that the FreeBSD stack generates an EINTR result is in
> cyg_tsleep() when the call to cyg_semaphore_timed_wait()
> returns false, and it is not a timeout.
Yep, that's the only place I could find.
> Something must either be zapping that semaphore in some way,
> or the thread is being released by something else. The OpenBSD
> stack has similar code, so it is not immediately clear why one
> stack is doing this and the other not.
>
> Are you sure that the EINTR result is coming from the stack
> itself and is not simply a leftover in errno from a previous
> call? Try zeroing errno before the call.
We'll try that.
> Also, in the original message you mentioned -EINTR.
>
> While negative error codes are returned from some drivers,
> network drivers don't do this. Negative driver error codes are
> also negated before being put into errno.
>
> So, I don't know where -EINTR is coming from, but it should
> never find its way into errno. I think your best approach is
> to track down where this error code is actually coming from.
I may have misunderstood the description of the send()
return/errno values. I'll double-check that.
--
Grant Edwards grante Yow! Oh my GOD -- the
at SUN just fell into YANKEE
visi.com STADIUM!!
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list