Bug 2107689
| Summary: | Autobind of empty unix socket on Linux broken since python 3.9 | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 9 | Reporter: | Nir Soffer <nsoffer> | |
| Component: | python3.9 | Assignee: | Charalampos Stratakis <cstratak> | |
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Lukáš Zachar <lzachar> | |
| Severity: | medium | Docs Contact: | ||
| Priority: | unspecified | |||
| Version: | CentOS Stream | CC: | bstinson, cstratak, jwboyer, pgm-rhel-tools, pviktori, torsava, vstinner | |
| Target Milestone: | rc | Keywords: | Rebase, Regression, Triaged | |
| Target Release: | --- | |||
| Hardware: | Unspecified | |||
| OS: | Unspecified | |||
| Whiteboard: | ||||
| Fixed In Version: | python3.9-3.9.14-1.el9 | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 2128249 (view as bug list) | Environment: | ||
| Last Closed: | 2023-08-07 08:57:40 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
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. *** |
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