Skip to content

Segfault in uvloop 0.22.1 #706

@FHTMitchell

Description

@FHTMitchell

Hi, I see a sefault in uviloop in my fastapi app. I can reproduce it 100% of the time inside the container.

The app is run with

python -X faulthandler -m uvicorn --loop uvloop app:app

If I switch to --loop asyncio I do not get a segfault.

Fatal Python error: Segmentation fault

Thread 0x00007fb2e380f700 (most recent call first):
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/threading.py", line 359 in wait
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/threading.py", line 655 in wait
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/opentelemetry/sdk/_shared_internal/__init__.py", line 159 in worker
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/threading.py", line 1012 in run
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/threading.py", line 1075 in _bootstrap_inner
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/threading.py", line 1032 in _bootstrap

Current thread 0x00007fb74a920400 (most recent call first):
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/starlette/middleware/base.py", line 120 in wrap
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/starlette/middleware/base.py", line 125 in receive_or_disconnect
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/starlette/requests.py", line 228 in stream
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/fastapi/routing.py", line 373 in app
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/fastapi/routing.py", line 106 in app
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42 in wrapped_app
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/fastapi/routing.py", line 120 in app
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/starlette/routing.py", line 290 in handle
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/starlette/routing.py", line 736 in app
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/starlette/routing.py", line 716 in __call__
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18 in __call__
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42 in wrapped_app
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 63 in __call__
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/starlette_exporter/middleware.py", line 405 in __call__
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/starlette/middleware/base.py", line 144 in coro
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/asyncio/runners.py", line 118 in run
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/asyncio/runners.py", line 195 in run
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/uvicorn/server.py", line 67 in run
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/uvicorn/main.py", line 593 in run
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/uvicorn/main.py", line 423 in main
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/click/core.py", line 824 in invoke
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/click/core.py", line 1269 in invoke
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/click/core.py", line 1406 in main
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/click/core.py", line 1485 in __call__
  File "/opt/app-root/.pixi/envs/default/lib/python3.12/site-packages/uvicorn/__main__.py", line 4 in <module>
  File "<frozen runpy>", line 88 in _run_code
  File "<frozen runpy>", line 198 in _run_module_as_main

Extension modules: uvloop.loop, httptools.parser.parser, httptools.parser.url_parser, websockets.speedups, psutil._psutil_linux, _brotli, zstandard.backend_c, gssapi.raw._enum_extensions.ext_dce, gssapi.raw._enum_extensions.ext_iov_mic, gssapi.raw.oids, gssapi.raw.types, gssapi.raw.cython_converters, gssapi.raw.misc, gssapi.raw.names, gssapi.raw.creds, gssapi.raw.chan_bindings, gssapi.raw.sec_contexts, gssapi.raw.message, gssapi.raw.exceptions, gssapi.raw.ext_s4u, gssapi.raw.ext_cred_store, gssapi.raw.ext_rfc4178, gssapi.raw.ext_rfc5587, gssapi.raw.ext_rfc5588, gssapi.raw.ext_rfc5801, gssapi.raw.ext_cred_imp_exp, gssapi.raw.mech_krb5, gssapi.raw.ext_password, gssapi.raw.ext_password_add, gssapi.raw.ext_dce_aead, gssapi.raw.ext_dce, gssapi.raw.ext_iov_mic, gssapi.raw.ext_krb5, gssapi.raw.ext_rfc6680, gssapi.raw.ext_rfc6680_comp_oid, gssapi.raw.ext_ggf, gssapi.raw.ext_set_cred_opt, _cffi_backend, work._ruamel_yaml, _ruamel_yaml, multidict._multidict, yarl._quoting_c, propcache._helpers_c, aiohttp._http_writer, aiohttp._http_parser, aiohttp._websocket.mask, aiohttp._websocket.reader_c, frozenlist._frozenlist, numpy._core._multiarray_umath, numpy.linalg._umath_linalg, pyarrow.lib, sqlalchemy.cyextension.collections, sqlalchemy.cyextension.immutabledict, sqlalchemy.cyextension.processors, sqlalchemy.cyextension.resultproxy, sqlalchemy.cyextension.util, greenlet._greenlet, pyodbc, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._pcg64, numpy.random._mt19937, numpy.random._generator, numpy.random._philox, numpy.random._sfc64, numpy.random.mtrand, pandas._libs.tslibs.ccalendar, pandas._libs.tslibs.np_datetime, pandas._libs.tslibs.dtypes, pandas._libs.tslibs.base, pandas._libs.tslibs.nattype, pandas._libs.tslibs.timezones, pandas._libs.tslibs.fields, pandas._libs.tslibs.timedeltas, pandas._libs.tslibs.tzconversion, pandas._libs.tslibs.timestamps, pandas._libs.properties, pandas._libs.tslibs.offsets, pandas._libs.tslibs.strptime, pandas._libs.tslibs.parsing, pandas._libs.tslibs.conversion, pandas._libs.tslibs.period, pandas._libs.tslibs.vectorized, pandas._libs.ops_dispatch, pandas._libs.missing, pandas._libs.hashtable, pandas._libs.algos, pandas._libs.interval, pandas._libs.lib, pyarrow._compute, pandas._libs.ops, pandas._libs.hashing, pandas._libs.arrays, pandas._libs.tslib, pandas._libs.sparse, pandas._libs.internals, pandas._libs.indexing, pandas._libs.index, pandas._libs.writers, pandas._libs.join, pandas._libs.window.aggregations, pandas._libs.window.indexers, pandas._libs.reshape, pandas._libs.groupby, pandas._libs.json, pandas._libs.parsers, pandas._libs.testing, pyarrow._feather, _cyutility, scipy._cyutility, scipy._lib._ccallback_c, scipy.sparse._sparsetools, _csparsetools, scipy.sparse._csparsetools, google._upb._message, confluent_kafka.cimpl (total: 117)
Segmentation fault (core dumped)

Environment (abridged)

arrow_odbc      7.0.4    py312h4413252_1 
fastapi         0.124.2  hc0e8453_0         
orjson          3.11.4   py312h868fb18_1     
pyodbc          5.3.0    py312h1289d80_0   
pytest          8.4.2    pyhcf101f3_1        
pytest-asyncio  0.25.3   pyh29332c3_0        
python          3.12.12  hd63d673_1_cpython 
simdutf         5.4.15   h5888daf_0        
sqlalchemy      2.0.45   py312h4c3975b_0
uvicorn         0.38.0   pyh31011fe_0       
uvloop          0.22.1   py312h4c3975b_1

I wasn't able to get a coredump because I don't have access but could possibly get one if required.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions