[Python-3000] test_asyncore fails intermittently on Darwin

Jeffrey Yasskin jyasskin at gmail.com
Sun Aug 5 03:53:45 CEST 2007


Well, regardless of the brokenness of the patch, I do get two
different failures from this test on OSX. The first is caused by
trying to socket.bind() a port that's already been bound recently:
Exception in thread Thread-2:
Traceback (most recent call last):
 File "/Users/jyasskin/src/python/test_asyncore/Lib/threading.py",
line 464, in __bootstrap
 self.run()
 File "/Users/jyasskin/src/python/test_asyncore/Lib/threading.py",
line 444, in run
 self.__target(*self.__args, **self.__kwargs)
 File "Lib/test/test_asyncore.py", line 59, in capture_server
 serv.bind(("", PORT))
 File "<string>", line 1, in bind
socket.error: (48, 'Address already in use')
That looks pretty easy to fix.
The second:
======================================================================
ERROR: test_send (__main__.DispatcherWithSendTests_UsePoll)
----------------------------------------------------------------------
Traceback (most recent call last):
 File "Lib/test/test_asyncore.py", line 351, in test_send
 d.send(data)
 File "/Users/jyasskin/src/python/test_asyncore/Lib/asyncore.py",
line 468, in send
 self.initiate_send()
 File "/Users/jyasskin/src/python/test_asyncore/Lib/asyncore.py",
line 455, in initiate_send
 num_sent = dispatcher.send(self, self.out_buffer[:512])
 File "/Users/jyasskin/src/python/test_asyncore/Lib/asyncore.py",
line 335, in send
 if why[0] == EWOULDBLOCK:
TypeError: 'error' object is unindexable
seems to be caused by a change in exceptions. I've reduced the problem
into the attached patch, which adds a test to Lib/test/test_socket.py.
It looks like subscripting is no longer the way to get values out of
socket.errors, but another way hasn't been implemented yet.
On 7/30/07, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> Hasan Diwan wrote:
> > The issue seems to be in the socket.py close method. It needs to sleep
> > socket.SO_REUSEADDR seconds before returning.
>> WHAT??? socket.SO_REUSEADDR is a flag that you pass when
> creating a socket to tell it to re-use an existing address,
> not something to be used as a timeout value, as far as
> I know.
>> --
> Greg
> _______________________________________________
> Python-3000 mailing list
> Python-3000 at python.org
> http://mail.python.org/mailman/listinfo/python-3000
> Unsubscribe: http://mail.python.org/mailman/options/python-3000/jyasskin%40gmail.com
>
-- 
Namasté,
Jeffrey Yasskin
http://jeffrey.yasskin.info/
"Religion is an improper response to the Divine." — "Skinny Legs and
All", by Tom Robbins
-------------- next part --------------
A non-text attachment was scrubbed...
Name: socket_breakage.diff
Type: application/octet-stream
Size: 1164 bytes
Desc: not available
Url : http://mail.python.org/pipermail/python-3000/attachments/20070804/c8e25af9/attachment.obj 


More information about the Python-3000 mailing list

AltStyle によって変換されたページ (->オリジナル) /