New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test_socket (testGetaddrinfo) failing on OS X 10.6.8 (32-bit) #64804
Comments
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: According to the OS X manpage for getaddrinfo(3), (and RFC 3493) this error is the expected behavior for a POSIX socket implementation:
(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. |
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 (bpo-17269) 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. |
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))] |
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. |
New changeset 6017d19669c3 by Ned Deily in branch '2.7': New changeset 11a75f141cec by Ned Deily in branch '3.3': New changeset 378bdb92e5b7 by Ned Deily in branch 'default': |
The committed changes should prevent spurious test failures. Thanks for the report. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: