Issue20605
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) * | 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) * | 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) | 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) * | 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:58 | admin | set | github: 64804 |
| 2014-02-14 06:58:08 | ned.deily | set | status: open -> closed resolution: fixed messages: + msg211204 stage: needs patch -> resolved |
| 2014-02-14 06:54:41 | python-dev | set | nosy:
+ python-dev messages: + msg211203 |
| 2014-02-13 00:15:51 | ned.deily | set | assignee: ned.deily messages: + msg211120 stage: needs patch |
| 2014-02-12 11:15:39 | geoffreyspear | set | messages: + msg211082 |
| 2014-02-12 07:05:12 | ned.deily | set | nosy:
+ ned.deily messages: + msg211058 |
| 2014-02-12 02:10:17 | geoffreyspear | create | |