Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #66602

Re: select(sock) indicates not-ready, but sock.recv does not block

From Roy Smith <roy@panix.com>
Newsgroups comp.lang.python
Subject Re: select(sock) indicates not-ready, but sock.recv does not block
Date 2014-02-17 08:04 -0500
Organization PANIX Public Access Internet and UNIX, NYC
Message-ID <roy-424605.08041317022014@news.panix.com> (permalink)
References <mailman.7083.1392618926.18130.python-list@python.org>

Show all headers | View raw


In article <mailman.7083.1392618926.18130.python-list@python.org>,
 Nikolaus Rath <Nikolaus@rath.org> wrote:

> Hello,
> 
> I have a problem with using select. I can reliably reproduce a situation
> where select.select((sock.fileno(),), (), (), 0) returns ((),(),())
> (i.e., no data ready for reading), but an immediately following
> sock.recv() returns data without blocking.
> 
> I am pretty sure that this is not a race condition. The behavor is 100%
> reproducible, the program is single threaded, and even waiting for 10
> seconds before the select() call does not change the result.
> 
> I'm running Python 3.3.3 under Linux 3.12.
> 
> Has anyone an idea what might be going wrong here?
> 
> Thanks,
> -Nikolaus

Can you post the code which demonstrates this?

Also, with any kind of networking problem, tcpdump is your fried.  When 
you run your code, use tcpdump to watch all the network traffic on 
whatever port your socket is bound to.  That might give you some clues 
what's going on.

Likewise, I would also strace the process and watch all the network 
system calls.  The problem you're describing might be unexpected 
behavior in Python, or it might be in the kernel.  Watching the actual 
system calls that are generated will narrow it down to which.

Back to comp.lang.python | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

select(sock) indicates not-ready, but sock.recv does not block Nikolaus Rath <Nikolaus@rath.org> - 2014-02-16 22:35 -0800
  Re: select(sock) indicates not-ready, but sock.recv does not block Roy Smith <roy@panix.com> - 2014-02-17 08:04 -0500

csiph-web