python / python/cpython

Python interpreter sometimes crashes when a pytest test access `socket.getfqdn` or `socket.getaddrinfo` on MacOS

Đang mở
#136,385 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

extension-modules topic-socket type-crash
Ngôn ngữ chính
Python
Star
77.2k
Fork
35.9k
Chỉ số merge pull request
Chỉ số pull request đang chờ

Mô tả

Crash report

What happened?

We have a Django app and run tests using pytest. Once every ~20 runs the Python interpreter crashes with Fatal Python error: Aborted. The Python interpreter crashes when trying to access socket.getfqdn or socket.getaddrinfo functions.

This only seems to happen on MacOS and we haven't seen this failure when running the same test suite on Linux (GitHub Actions).

I've also tried to isolate the problem but wasn't able to reproduce the issue by having a simple program that calls getfqdn directly with or without pytest.

Here is a stack trace when getaddrinfo crashes:

apps/integrations/render/tests/test_views.py .........Fatal Python error: Aborted

Current thread 0x000000020bac9f00 (most recent call first):
  File "/opt/homebrew/Cellar/python@3.13/3.13.5/Frameworks/Python.framework/Versions/3.13/lib/python3.13/socket.py", line 977 in getaddrinfo
  File "/opt/homebrew/Cellar/python@3.13/3.13.5/Frameworks/Python.framework/Versions/3.13/lib/python3.13/socket.py", line 840 in create_connection
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/httpcore/_backends/sync.py", line 208 in connect_tcp
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/httpcore/_sync/connection.py", line 124 in _connect
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/httpcore/_sync/connection.py", line 78 in handle_request
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/httpcore/_sync/connection_pool.py", line 236 in handle_request
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/httpx/_transports/default.py", line 250 in handle_request
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/httpx/_client.py", line 1014 in _send_single_request
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/httpx/_client.py", line 979 in _send_handling_redirects
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/httpx/_client.py", line 942 in _send_handling_auth
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/httpx/_client.py", line 914 in send
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/httpx/_client.py", line 825 in request
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/httpx/_api.py", line 109 in request
  File "/Users/nejcambrozic/code/app/apps/integrations/render/client.py", line 57 in request
  File "/Users/nejcambrozic/code/app/.venv/lib/python3.13/site-packages/stamina/_core.py", line 756 in sync_inner
  File "/Users/nejcambrozic/code/app/apps/integrations/render/views.py", line 22 in fetch_workspace_data
  File "/Users/nejcambrozic/code/app/apps/integrations/render/views.py", line 62 in get_workspace_choices
  File "/Users/nejcambrozic/code/app/apps/integrations/render/views.py", line 57 in __init__
  File "/Users/nejcambrozic/code/app/apps/integrations/render/views.py", line 115 in edit
  File "/Users/nejcambrozic/code/app/apps/organizations/decorators.py", line 38 in _inner

Here is a stack trace example when getfqdn crashed:

apps/organizations/tests/test_organizations_middleware.py ....Fatal Python error: Aborted

Current thread 0x000000020a5b1f00 (most recent call first):
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/socket.py", line 807 in getfqdn
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/mail/utils.py", line 18 in get_fqdn
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/mail/utils.py", line 14 in __str__
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/email/utils.py", line 311 in make_msgid
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/mail/message.py", line 287 in message
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/mail/backends/locmem.py", line 30 in send_messages
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/mail/message.py", line 307 in send
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/mail/__init__.py", line 92 in send_mail
  File "/Users/anzepecar/watchpointlabs/app/apps/organizations/invitations.py", line 16 in send_invitation
  File "/Users/anzepecar/watchpointlabs/app/apps/organizations/views/manage_organization_views.py", line 127 in resend_invitation
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/views/decorators/http.py", line 64 in inner
  File "/Users/anzepecar/watchpointlabs/app/apps/organizations/decorators.py", line 38 in _inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/base.py", line 197 in _get_response
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django_browser_reload/middleware.py", line 48 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/zeal/middleware.py", line 22 in middleware
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/watchpoint_labs/middleware.py", line 53 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/auditlog/middleware.py", line 67 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/utils/deprecation.py", line 120 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/watchpoint_labs/middleware.py", line 20 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/utils/deprecation.py", line 120 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/utils/deprecation.py", line 120 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/utils/deprecation.py", line 120 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/apps/web/middleware/htmx.py", line 11 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/apps/web/middleware/locale.py", line 42 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/apps/web/middleware/locale.py", line 17 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/utils/deprecation.py", line 120 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/allauth/usersessions/middleware.py", line 18 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/allauth/account/middleware.py", line 36 in middleware
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django_htmx/middleware.py", line 39 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/utils/deprecation.py", line 120 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/utils/deprecation.py", line 120 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/utils/deprecation.py", line 120 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/utils/deprecation.py", line 120 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/utils/deprecation.py", line 120 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/whitenoise/middleware.py", line 123 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/utils/deprecation.py", line 120 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 55 in inner
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/core/handlers/base.py", line 140 in get_response
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/test/client.py", line 186 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/test/client.py", line 1082 in request
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/test/client.py", line 671 in generic
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/test/client.py", line 499 in post
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/test/client.py", line 1153 in post
  File "/Users/anzepecar/watchpointlabs/app/apps/organizations/tests/test_organizations_middleware.py", line 51 in test_organization_admin_view
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/unittest/case.py", line 606 in _callTestMethod
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/unittest/case.py", line 651 in run
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/unittest/case.py", line 707 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/test/testcases.py", line 376 in _setup_and_call
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/django/test/testcases.py", line 321 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pytest_django/plugin.py", line 573 in non_debugging_runtest
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 178 in pytest_runtest_call
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121 in _multicall
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 246 in <lambda>
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 344 in from_call
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 245 in call_and_report
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 136 in runtestprotocol
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/runner.py", line 117 in pytest_runtest_protocol
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121 in _multicall
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/main.py", line 367 in pytest_runtestloop
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121 in _multicall
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/main.py", line 343 in _main
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/main.py", line 289 in wrap_session
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/main.py", line 336 in pytest_cmdline_main
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_callers.py", line 121 in _multicall
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/pluggy/_hooks.py", line 512 in __call__
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py", line 175 in main
  File "/Users/anzepecar/watchpointlabs/app/.venv/lib/python3.13/site-packages/_pytest/config/__init__.py", line 201 in console_main
  File "/Users/anzepecar/watchpointlabs/app/.venv/bin/pytest", line 10 in <module>

Extension modules: _brotli, _time_machine, yaml._yaml, greenlet._greenlet, tornado.speedups, regex._regex, websockets.speedups, psycopg_binary.pq, psycopg_binary._psycopg, _cffi_backend, charset_normalizer.md, snowflake.connector.nanoarrow_arrow_iterator, markupsafe._speedups, multidict._multidict, yarl._quoting_c, propcache._helpers_c, aiohttp._http_writer, aiohttp._http_parser, aiohttp._websocket.mask, aiohttp._websocket.reader_c, frozenlist._frozenlist, fontTools.misc.bezierTools, PIL._imaging, fontTools.varLib.iup, sqlalchemy.cyextension.collections, sqlalchemy.cyextension.immutabledict, sqlalchemy.cyextension.processors, sqlalchemy.cyextension.resultproxy, sqlalchemy.cyextension.util, ujson, asyncpg.pgproto.pgproto, asyncpg.protocol.protocol, maxminddb.extension (total: 33)

I'm also attaching the Problem Details and System Configuration output from the Python quit unexpectedly dialog on MacOS:

problem-details.txt

CPython versions tested on:

3.13

Operating systems tested on:

macOS

Output from running 'python -VV' on the command line:

Python 3.13.5 (v3.13.5:6cb20a219a8, Jun 11 2025, 12:23:45) [Clang 16.0.0 (clang-1600.0.26.6)]

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu với các entry point trong socket.py cho getfqdn và getaddrinfo, sau đó so sánh hai crash trace macOS được báo cáo và các đường dẫn test apps/integrations/render/tests/test_views.py và apps/organizations/tests/test_organizations_middleware.py. Được xem là hoàn tất khi xác định được một lỗi CPython có thể tái hiện và ghi lại regression coverage; báo cáo hiện chưa có một reproducer độc lập.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
macos, python
Lĩnh vực
networking, operating-systems
Loại issue
Lỗi
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.