This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Created on 2014-02-12 02:10 by geoffreyspear, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Messages (6)
msg211053 - (view) Author: Geoffrey Spear (geoffreyspear) * Date: 2014-02-12 02:10
On OS X 10.6.8, I'm getting the following result for test_socket: [cpython] % ./python.exe -m test test_socket [1/1] test_socket /Users/geoff/Documents/programming/cpython/Lib/test/test_socket.py:1721: RuntimeWarning: received malformed or improperly-truncated ancillary data result = sock.recvmsg(bufsize, *args) /Users/geoff/Documents/programming/cpython/Lib/test/test_socket.py:1812: RuntimeWarning: received malformed or improperly-truncated ancillary data result = sock.recvmsg_into([buf], *args) test test_socket failed -- Traceback (most recent call last): File "/Users/geoff/Documents/programming/cpython/Lib/test/test_socket.py", line 1169, in testGetaddrinfo socket.getaddrinfo("localhost", None, 0, 0, 0, socket.AI_NUMERICSERV) socket.gaierror: [Errno 8] nodename nor servname provided, or not known 1 test failed: test_socket According to the OS X manpage for getaddrinfo(3), (and RFC 3493) this error is the expected behavior for a POSIX socket implementation: AI_NUMERICSERV If the AI_NUMERICSERV bit is set, then a non-null servname string supplied shall be a numeric port string. Otherwise, an EAI_NONAME error shall be returned. This bit shall prevent any type of name resolu- tion service (for example, NIS+) from being invoked. (servname is the 2nd argument to getaddrinfo(), where the test passes None. EAI_NONAME is Errno 8.) Confirmed on 2.7.6, 3.3 and current HEAD of 3.4; the offending test code didn't exist in 3.2 and earlier.
msg211058 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2014-02-12 07:05
The test works for me on OS X 10.6 and OS X 10.9. My guess is that the problem you are seeing is due to a failing lookup of "localhost". What does your Python report for: socket.gethostbyname("localhost") The getaddrinfo(3) man page description does not really cover the case here since Python's socketmodule.c contains a workaround to prevent an OS X segfault (Issue17269) so the test that is failing is actually equivalent to: socket.getaddrinfo("localhost", "00", 0, 0, 0, socket.AI_NUMERICSERV) The equivalent C code executes without error on my systems regardless whether it is meaningful.
msg211082 - (view) Author: Geoffrey Spear (geoffreyspear) * Date: 2014-02-12 11:15
Ned: >>> socket.gethostbyname("localhost") '127.0.0.1' >>> socket.getaddrinfo("localhost", "00", 0, 0, 0, socket.AI_NUMERICSERV) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.4/socket.py", line 530, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno 8] nodename nor servname provided, or not known And to show that using AI_NUMERICSERV isn't *completely* broken on my machine: >>> socket.getaddrinfo("localhost", "80", 0, 0, 0, socket.AI_NUMERICSERV) [(<AddressFamily.AF_INET: 2>, <SocketType.SOCK_DGRAM: 2>, 17, '', ('127.0.0.1', 80)), (<AddressFamily.AF_INET: 2>, <SocketType.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 80)), (<AddressFamily.AF_INET6: 30>, <SocketType.SOCK_DGRAM: 2>, 17, '', ('::1', 80, 0, 0)), (<AddressFamily.AF_INET6: 30>, <SocketType.SOCK_STREAM: 1>, 6, '', ('::1', 80, 0, 0)), (<AddressFamily.AF_INET6: 30>, <SocketType.SOCK_DGRAM: 2>, 17, '', ('fe80::1%lo0', 80, 0, 1)), (<AddressFamily.AF_INET6: 30>, <SocketType.SOCK_STREAM: 1>, 6, '', ('fe80::1%lo0', 80, 0, 1))]
msg211120 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2014-02-13 00:15
OK, OK, it's not just your machine :=) I was finally able to reproduce the same failure on a different 10.6 system. I'm still not sure what the difference between them is but it really doesn't matter. I have a patch forthcoming to make the test work in either case.
msg211203 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2014-02-14 06:54
New changeset 6017d19669c3 by Ned Deily in branch '2.7': Issue #20605: Make test_socket getaddrinfo OS X segfault test more robust. http://hg.python.org/cpython/rev/6017d19669c3 New changeset 11a75f141cec by Ned Deily in branch '3.3': Issue #20605: Make test_socket getaddrinfo OS X segfault test more robust. http://hg.python.org/cpython/rev/11a75f141cec New changeset 378bdb92e5b7 by Ned Deily in branch 'default': Issue #20605: Make test_socket getaddrinfo OS X segfault test more robust. http://hg.python.org/cpython/rev/378bdb92e5b7
msg211204 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2014-02-14 06:58
The committed changes should prevent spurious test failures. Thanks for the report.
History
Date User Action Args
2022-04-11 14:57:58adminsetgithub: 64804
2014-02-14 06:58:08ned.deilysetstatus: open -> closed
resolution: fixed
messages: + msg211204

stage: needs patch -> resolved
2014-02-14 06:54:41python-devsetnosy: + python-dev
messages: + msg211203
2014-02-13 00:15:51ned.deilysetassignee: ned.deily
messages: + msg211120
stage: needs patch
2014-02-12 11:15:39geoffreyspearsetmessages: + msg211082
2014-02-12 07:05:12ned.deilysetnosy: + ned.deily
messages: + msg211058
2014-02-12 02:10:17geoffreyspearcreate