Apple M2 MacBook Pro使用uWSGI与requests库时出现段错误求助
uWSGI主进程模式下调用requests触发段错误的问题及排查
环境与配置
- 设备:Apple MacBook Pro M2
- 环境:Pyenv管理的Python 3.10.5、openssl@1.1、Django4.1.1、requests2.28.1、uwsgi==2.0.20
uWSGI配置文件
processes = 1 enable-threads = true single-interpreter = true http = 127.0.0.1:8080 socket = 127.0.0.1:8081 master = true python-auto-reload = 1 thunder-lock = true max-requests = 5000 harakiri = 1200 buffer-size = 65535 disable-logging = true
问题现象
当uWSGI配置中master设为true时,调用requests发起任意请求都会触发Segmentation Fault(段错误);将master改为false后,段错误不再出现。推测问题可能出在uWSGI、requests库或openssl的交互上。
段错误回溯日志
!!! uWSGI process 94052 got Segmentation Fault !!! *** backtrace of 94052 *** 0 uwsgi 0x0000000100c89398 uwsgi_backtrace + 52 1 uwsgi 0x0000000100c898ac uwsgi_segfault + 56 2 libsystem_platform.dylib 0x00000001b04b42a4 _sigtramp + 56 3 libsystem_trace.dylib 0x00000001b022e098 _os_log_preferences_refresh + 36 4 libsystem_trace.dylib 0x00000001b022eae0 os_log_type_enabled + 644 5 CoreFoundation 0x00000001b05199c8 -[CFPrefsSearchListSource alreadylocked_copyValueForKey:] + 204 6 CoreFoundation 0x00000001b05198dc -[CFPrefsSource copyValueForKey:] + 52 7 CoreFoundation 0x00000001b0519890 __76-[_CFXPreferences copyAppValueForKey:identifier:container:configurationURL:]_block_invoke + 32 8 CoreFoundation 0x00000001b0511f44 __108-[_CFXPreferences(SearchListAdditions) withSearchListForIdentifier:container:cloudConfigurationURL:perform:]_block_invoke + 376 9 CoreFoundation 0x00000001b068c734 -[_CFXPreferences withSearchListForIdentifier:container:cloudConfigurationURL:perform:] + 384 10 CoreFoundation 0x00000001b0511818 -[_CFXPreferences copyAppValueForKey:identifier:container:configurationURL:] + 168 11 CoreFoundation 0x00000001b0511734 _CFPreferencesCopyAppValueWithContainerAndConfiguration + 112 12 SystemConfiguration 0x00000001b10e08cc SCDynamicStoreCopyProxiesWithOptions + 180 13 _scproxy.cpython-310-darwin.so 0x000000010215b85c get_proxy_settings + 44 14 libpython3.10.dylib 0x00000001011ca2ec cfunction_vectorcall_NOARGS + 332 15 libpython3.10.dylib 0x0000000101264b9c call_function + 316 16 libpython3.10.dylib 0x0000000101262204 _PyEval_EvalFrameDefault + 25452 17 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 18 libpython3.10.dylib 0x0000000101264b9c call_function + 316 19 libpython3.10.dylib 0x0000000101262204 _PyEval_EvalFrameDefault + 25452 20 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 21 libpython3.10.dylib 0x0000000101264b9c call_function + 316 22 libpython3.10.dylib 0x0000000101262204 _PyEval_EvalFrameDefault + 25452 23 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 24 libpython3.10.dylib 0x0000000101264b9c call_function + 316 25 libpython3.10.dylib 0x000000010126227c _PyEval_EvalFrameDefault + 25572 26 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 27 libpython3.10.dylib 0x0000000101264b9c call_function + 316 28 libpython3.10.dylib 0x000000010126227c _PyEval_EvalFrameDefault + 25572 29 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 30 libpython3.10.dylib 0x0000000101264b9c call_function + 316 31 libpython3.10.dylib 0x0000000101262154 _PyEval_EvalFrameDefault + 25276 32 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 33 libpython3.10.dylib 0x00000001011846e8 method_vectorcall + 168 34 libpython3.10.dylib 0x0000000101182430 PyVectorcall_Call + 144 35 libpython3.10.dylib 0x00000001012624a4 _PyEval_EvalFrameDefault + 26124 36 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 37 libpython3.10.dylib 0x0000000101182430 PyVectorcall_Call + 144 38 libpython3.10.dylib 0x00000001012624a4 _PyEval_EvalFrameDefault + 26124 39 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 40 libpython3.10.dylib 0x0000000101264b9c call_function + 316 41 libpython3.10.dylib 0x000000010126227c _PyEval_EvalFrameDefault + 25572 42 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 43 libpython3.10.dylib 0x00000001011846e8 method_vectorcall + 168 44 libpython3.10.dylib 0x0000000101264b9c call_function + 316 45 libpython3.10.dylib 0x000000010126227c _PyEval_EvalFrameDefault + 25572 46 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 47 libpython3.10.dylib 0x00000001011846e8 method_vectorcall + 168 48 libpython3.10.dylib 0x0000000101264b9c call_function + 316 49 libpython3.10.dylib 0x000000010126227c _PyEval_EvalFrameDefault + 25572 50 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 51 libpython3.10.dylib 0x0000000101182430 PyVectorcall_Call + 144 52 libpython3.10.dylib 0x00000001012624a4 _PyEval_EvalFrameDefault + 26124 53 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 54 libpython3.10.dylib 0x0000000101182430 PyVectorcall_Call + 144 55 libpython3.10.dylib 0x00000001012624a4 _PyEval_EvalFrameDefault + 26124 56 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 57 libpython3.10.dylib 0x0000000101182430 PyVectorcall_Call + 144 58 libpython3.10.dylib 0x00000001012624a4 _PyEval_EvalFrameDefault + 26124 59 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 60 libpython3.10.dylib 0x0000000101264b9c call_function + 316 61 libpython3.10.dylib 0x0000000101262204 _PyEval_EvalFrameDefault + 25452 62 libpython3.10.dylib 0x000000010125bd8c _PyEval_Vector + 164 63 libpython3.10.dylib 0x0000000101264b9c call_function + 316 *** end of backtrace ***
排查与解决方案方向
从回溯日志看,段错误发生在系统代理设置获取流程中(get_proxy_settings调用链),结合master模式才会触发的现象,可尝试以下方案:
- 禁用requests自动代理检测:在requests请求中显式设置
proxies={"http": None, "https": None},跳过系统代理配置读取,避免触发崩溃路径。 - 升级uWSGI版本:当前使用的uWSGI 2.0.20在Apple Silicon平台可能存在进程fork后的系统调用兼容性问题,尝试升级到2.0.21及以上版本,官方后续版本修复过部分ARM架构下的进程管理bug。
- 调整uWSGI配置:保留
master=true的同时,添加lazy-apps=true配置项,让子进程独立加载应用,避免主进程与子进程在系统资源调用上的冲突。 - 更换openssl版本:尝试切换到openssl@3.x版本,排查是否为旧版本openssl与Apple Silicon系统调用的兼容性问题。
- 验证Python环境:用系统自带Python或重新通过pyenv编译Python 3.10.x版本,确保编译时适配Apple Silicon架构,避免因Python二进制文件兼容性导致的崩溃。
内容的提问来源于stack exchange,提问作者platypus
相关产品推荐
相关产品推荐

