Description of problem: Since python 3.9, bind("") binds to b"\x00" instead of to a random address in the abstract namespace (e.g. b"\x0012345") In python 3.8: $ python3.8 Python 3.8.13 (default, Jun 10 2022, 00:00:00) [GCC 12.1.1 20220507 (Red Hat 12.1.1-1)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>> s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) >>> s.bind("") >>> s.getsockname() b'\x0075499' With python 3.9: $ python3 Python 3.9.13 (main, Jun 9 2022, 00:00:00) [GCC 11.3.1 20220421 (Red Hat 11.3.1-2)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>> s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) >>> s.bind("") >>> s.getsockname() b'\x00' Trying to bind multiple socket to "" will fail with: OSError: [Errno 98] Address already in use Version-Release number of selected component (if applicable): python3-3.9.13-2.el9.x86_64 How reproducible: 100% Upstream bug: https://github.com/python/cpython/issues/94821 Fixed in: https://github.com/python/cpython/pull/94826 Backport to 3.9: https://github.com/python/cpython/pull/94875
This has been fixed in Python 3.9 on July 26th 2022, since it's not urgent we're waiting for a new release of Python 3.9 upstream (happens every ~2 months) and then we'll rebase. Most likely this will happen for RHEL 9.2.
Python 3.9.14 released last week contains the fix: https://pythoninsider.blogspot.com/2022/09/python-releases-3107-3914-3814-and-3714.html
*** Bug 2129075 has been marked as a duplicate of this bug. ***