X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,TW_FN X-Spam-Check-By: sourceware.org Message-ID: <4E393119.6050809@dronecode.org.uk> Date: Wed, 03 Aug 2011 12:29:29 +0100 From: Jon TURNEY User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20110714 Thunderbird/6.0 MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Re: python doesn't allow descriptors > 63 in select References: <20110803074950 DOT GH5647 AT calimero DOT vinschen DOT de> In-Reply-To: <20110803074950.GH5647@calimero.vinschen.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On 03/08/2011 08:49, Corinna Vinschen wrote: > Hi Jason, > > it looks like there's a build glitch in python: > > $ cat> sel.py< from socket import * > from select import select > > ins = [] > > for i in range(1024): > s = socket(AF_INET, SOCK_STREAM) > ins.append(s) > print "socket opened with fd", s.fileno() > select(ins, [], [], 0) > EOF > $ python sel.py > socket opened with fd 3 > socket opened with fd 4 > socket opened with fd 5 > [...] > socket opened with fd 62 > socket opened with fd 63 > socket opened with fd 64 > socket opened with fd 64 > Traceback (most recent call last): > File "test.py", line 10, in > select(ins, [], [], 0) > ValueError: filedescriptor out of range in select() > > I debugged this and it turns out that python does not call Cygwin's > select function anymore, as soon as there's a file descriptor in the > set which is>= 64. > > While the default value for FD_SETSIZE is 64 (see /usr/include/sys/types.h): > > # ifndef FD_SETSIZE > # define FD_SETSIZE 64 > > AFAICS the python default for the fd set is 256, see the definition > in /usr/include/python2.6/pyport.h: > > #ifndef FD_SETSIZE > #define FD_SETSIZE 256 > > But somehow this didn't make it into the python build. On my Linux > box, the same script only stops when it hits the soft descriptor > limit, 1024 in my case. > > Can you have a look and, perhaps, provide a new python with a bigger > internal FD_SETSIZE? The 256 from /usr/include/python2.6/pyport.h > would already be ok, I guess, but 512 or so wouldn't hurt either... fwiw, I already reported this problem with a patch to fix it at [1]. [1] http://cygwin.com/ml/cygwin/2011-03/msg00651.html -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple