classification
Title: test_create_ssl_unix_connection() of test_asyncio failed on "x86 Tiger 3.x"
Type: Stage: resolved
Components: Versions:
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: Michael.Felt, hynek, ned.deily, python-dev, ronaldoussoren, vstinner, yselivanov
Priority: Keywords: patch

Created on 2014-02-19 01:01 by vstinner, last changed 2018-08-24 20:41 by Michael.Felt. This issue is now closed.

Files
File name Uploaded Description Edit
broken_unix_getsockname.patch vstinner, 2014-02-20 23:34 review
Messages (10)
msg211579 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2014-02-19 01:01
http://buildbot.python.org/all/builders/x86%20Tiger%203.x/builds/7907/steps/test/logs/stdio

======================================================================
FAIL: test_create_ssl_unix_connection (test.test_asyncio.test_events.KqueueEventLoopTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/db3l/buildarea/3.x.bolen-tiger/build/Lib/test/test_asyncio/test_events.py", line 581, in test_create_ssl_unix_connection
    self._basetest_create_ssl_connection(conn_fut)
  File "/Users/db3l/buildarea/3.x.bolen-tiger/build/Lib/test/test_asyncio/test_events.py", line 556, in _basetest_create_ssl_connection
    self.assertIsNotNone(tr.get_extra_info('sockname'))
AssertionError: unexpectedly None

======================================================================
FAIL: test_create_ssl_unix_connection (test.test_asyncio.test_events.PollEventLoopTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/db3l/buildarea/3.x.bolen-tiger/build/Lib/test/test_asyncio/test_events.py", line 581, in test_create_ssl_unix_connection
    self._basetest_create_ssl_connection(conn_fut)
  File "/Users/db3l/buildarea/3.x.bolen-tiger/build/Lib/test/test_asyncio/test_events.py", line 556, in _basetest_create_ssl_connection
    self.assertIsNotNone(tr.get_extra_info('sockname'))
AssertionError: unexpectedly None

======================================================================
FAIL: test_create_ssl_unix_connection (test.test_asyncio.test_events.SelectEventLoopTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/db3l/buildarea/3.x.bolen-tiger/build/Lib/test/test_asyncio/test_events.py", line 581, in test_create_ssl_unix_connection
    self._basetest_create_ssl_connection(conn_fut)
  File "/Users/db3l/buildarea/3.x.bolen-tiger/build/Lib/test/test_asyncio/test_events.py", line 556, in _basetest_create_ssl_connection
    self.assertIsNotNone(tr.get_extra_info('sockname'))
AssertionError: unexpectedly None
msg211584 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2014-02-19 01:21
New changeset 64ad965a2fd4 by Victor Stinner in branch 'default':
Issue #20682: test_asyncio, _basetest_create_connection() checks also the
http://hg.python.org/cpython/rev/64ad965a2fd4
msg211586 - (view) Author: Yury Selivanov (yselivanov) * (Python committer) Date: 2014-02-19 01:43
Looking at a man page for getsockname on Mac OS X (10.9):

BUGS: Names bound to sockets in the UNIX domain are inaccessible; getsockname() returns a zero-length address.

If you are not on macos: http://www.manpages.info/macosx/getsockname.2.html
msg211611 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2014-02-19 12:59
> Looking at a man page for getsockname on Mac OS X (10.9):
> BUGS: Names bound to sockets in the UNIX domain are inaccessible; getsockname() returns a zero-length address.

test_asyncio pass on Mac OS 10.6 (Snow Leopard) and 10.9 (Maverick). The issue looks to be specific to Mac OS 10.4.
msg211632 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2014-02-19 17:10
New changeset e6016fffc894 by Victor Stinner in branch 'default':
Close #20682: Fix UNIX sockets tests of test_asyncio on Mac OS X Tiger
http://hg.python.org/cpython/rev/e6016fffc894
msg211633 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2014-02-19 17:32
New changeset 07cdce316b1d by Victor Stinner in branch 'default':
Issue #20682: Oops, fix test_create_connection() of test_asyncio (fix my previous commit)
http://hg.python.org/cpython/rev/07cdce316b1d
msg211764 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2014-02-20 23:34
Oh, AIX has the same issue. I propose broken_unix_getsockname.patch to skip also the check on 'sockname' extra info on AIX.

The fix can wait Python 3.4.1.

http://buildbot.python.org/all/builders/PPC64%20AIX%203.x/builds/1757/steps/test/logs/stdio

======================================================================
FAIL: test_create_ssl_unix_connection (test.test_asyncio.test_events.PollEventLoopTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/shager/cpython-buildarea/3.x.edelsohn-aix-ppc64/build/Lib/test/test_asyncio/test_events.py", line 603, in test_create_ssl_unix_connection
    self._basetest_create_ssl_connection(conn_fut, check_sockname)
  File "/home/shager/cpython-buildarea/3.x.edelsohn-aix-ppc64/build/Lib/test/test_asyncio/test_events.py", line 574, in _basetest_create_ssl_connection
    self.assertIsNotNone(tr.get_extra_info('sockname'))
AssertionError: unexpectedly None
msg213838 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2014-03-17 06:31
New changeset 9aac931d7bf5 by Victor Stinner in branch '3.4':
Issue #20682: test_asyncio, _basetest_create_connection() checks also the
http://hg.python.org/cpython/rev/9aac931d7bf5

New changeset 472a4988489e by Victor Stinner in branch '3.4':
Close #20682: Fix UNIX sockets tests of test_asyncio on Mac OS X Tiger
http://hg.python.org/cpython/rev/472a4988489e

New changeset f38a7d61c4c2 by Victor Stinner in branch '3.4':
Issue #20682: Oops, fix test_create_connection() of test_asyncio (fix my previous commit)
http://hg.python.org/cpython/rev/f38a7d61c4c2
msg324015 - (view) Author: Michael Felt (Michael.Felt) * Date: 2018-08-24 20:40
Inspired by msg211764 I made a PR - which I hope is okay to add here.

If not, a new issue and PR can be made later.

In short: 
   For address family of AF_UNIX or AF_UNIX_CCSID, getsockname() returns 0 if issued before a bind(). The address length is 0. This is always the case for sockets created by socketpair().

That is at least one possible explanation I found.

Have testewd on AIX 6.1 and AIX 7.1 - on AF_UNIX family getsockname() returns 'None' (i.e., transport.get_extra_info('sockname') returns None)
msg324016 - (view) Author: Michael Felt (Michael.Felt) * Date: 2018-08-24 20:41
Ah, leave closed. I'll make a new issue, and reference this one. Sorry for the noise here.
History
Date User Action Args
2018-08-24 20:41:34Michael.Feltsetmessages: + msg324016
2018-08-24 20:40:22Michael.Feltsetnosy: + Michael.Felt
messages: + msg324015
2014-03-17 06:31:15python-devsetmessages: + msg213838
2014-02-20 23:34:15vstinnersetpriority: release blocker ->
files: + broken_unix_getsockname.patch
messages: + msg211764

keywords: + patch
2014-02-19 17:32:13python-devsetmessages: + msg211633
2014-02-19 17:10:48python-devsetstatus: open -> closed
resolution: fixed
messages: + msg211632

stage: resolved
2014-02-19 12:59:53vstinnersetmessages: + msg211611
2014-02-19 01:43:14yselivanovsetmessages: + msg211586
2014-02-19 01:29:57yselivanovsetpriority: normal -> release blocker
2014-02-19 01:28:57vstinnersetnosy: + ronaldoussoren, ned.deily, hynek
2014-02-19 01:21:35python-devsetnosy: + python-dev
messages: + msg211584
2014-02-19 01:01:55vstinnercreate