Charles-François Natali <neolo...@free.fr> added the comment:

Here's a patch skipping testFDPassSeparate and
testFDPassSeparateMinSpace on OS X < 10.5, due to known kernel bugs
(see http://developer.apple.com/library/mac/#qa/qa1541/_index.html).
For InterruptedSendTimeoutTest and testInterruptedSendmsgTimeout, it
also looks like a kernel bug.
There could be another explanation, though: if, for some reason, other
threads are running at that time, the signal might be delivered to
another thread, and our main thread remains stuck on sendto/sendmsg
once the socket buffer is full. I'm however not sure why this would
only affect OS X (since FreeBSD behaves in the same way when it comes
to signals, contrarily to Linux). Also, I'm not sure why this would
not affect recv/recvmsg.

----------
Added file: http://bugs.python.org/file23027/pass_fds_osx.diff

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue6560>
_______________________________________
diff -r 1696e2789d91 Lib/test/test_socket.py
--- a/Lib/test/test_socket.py   Wed Aug 24 02:15:25 2011 +0200
+++ b/Lib/test/test_socket.py   Wed Aug 24 18:36:22 2011 +0200
@@ -2090,7 +2090,9 @@
     def _testFDPassCMSG_LEN(self):
         self.createAndSendFDs(1)
 
+    # Passing multiple FDs at once isn't reliable on OS X < 10.5.
     @requireAttrs(socket, "CMSG_SPACE")
+    @support.requires_mac_ver(10, 5)
     def testFDPassSeparate(self):
         # Pass two FDs in two separate arrays.  Arrays may be combined
         # into a single control message by the OS.
@@ -2111,6 +2113,7 @@
             len(MSG))
 
     @requireAttrs(socket, "CMSG_SPACE")
+    @support.requires_mac_ver(10, 5)
     def testFDPassSeparateMinSpace(self):
         # Pass two FDs in two separate arrays, receiving them into the
         # minimum space for two arrays.
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to