Python 3.2-uWSGI进程出现分段错误

Python 3.2-uWSGI进程出现分段错误,python,nginx,build,compilation,uwsgi,Python,Nginx,Build,Compilation,Uwsgi,简介: 它是一个使用Python3.2、NGINX和uWSGI的web应用程序环境 Python3.2、NGINX和uWSGI组件是通过构建和安装(“./configure”、“make”和“make install”)安装的,它们使用OpenSSL 1.0.X,也通过构建和安装安装 该应用程序在Ubuntu 20.04 LTS上运行 问题: 应用程序无法启动,uWSGI日志显示以下信息 Thu Jan 21 21:44:37 2021 - Respawned uWSGI worker 4 (n

简介:

它是一个使用Python3.2、NGINX和uWSGI的web应用程序环境

Python3.2、NGINX和uWSGI组件是通过构建和安装(“./configure”、“make”和“make install”)安装的,它们使用OpenSSL 1.0.X,也通过构建和安装安装

该应用程序在Ubuntu 20.04 LTS上运行

问题:

应用程序无法启动,uWSGI日志显示以下信息

Thu Jan 21 21:44:37 2021 - Respawned uWSGI worker 4 (new pid: 99572)
Thu Jan 21 21:44:37 2021 - worker 3 buried after 0 seconds
Thu Jan 21 21:44:37 2021 - worker 7 buried after 0 seconds
Thu Jan 21 21:44:37 2021 - worker 1 buried after 0 seconds
Thu Jan 21 21:44:37 2021 - worker 8 buried after 0 seconds
Thu Jan 21 21:44:37 2021 - worker 5 buried after 0 seconds
Thu Jan 21 21:44:37 2021 - received message 0 from emperor
Thu Jan 21 21:44:37 2021 - SIGINT/SIGQUIT received...killing workers...
Thu Jan 21 21:44:37 2021 - mem-collector thread started for worker 4
Thu Jan 21 21:44:37 2021 - !!! uWSGI process 99543 got Segmentation Fault !!!
Thu Jan 21 21:44:37 2021 - *** backtrace of 99543 ***
/usr/local/lb/uwsgi_ve32/bin/uwsgi(uwsgi_backtrace+0x2e) [0x556d323f077e]
/usr/local/lb/uwsgi_ve32/bin/uwsgi(uwsgi_segfault+0x27) [0x556d323f0b67]
/lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7f60a0f33210]
/lib/x86_64-linux-gnu/libc.so.6(+0x186b7e) [0x7f60a1073b7e]
/usr/local/ssl/lib/libcrypto.so.1.0.0(+0x12254c) [0x7f60a147054c]
/usr/local/ssl/lib/libcrypto.so.1.0.0(lh_insert+0x56) [0x7f60a14707e6]
/usr/local/ssl/lib/libcrypto.so.1.0.0(OBJ_NAME_add+0x74) [0x7f60a13bbc84]
/lib/x86_64-linux-gnu/libssl.so.1.1(+0x36392) [0x7f60a0067392]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x1247f) [0x7f60a181547f]
/lib/x86_64-linux-gnu/libcrypto.so.1.1(CRYPTO_THREAD_run_once+0xd) [0x7f609ff3d78d]
/lib/x86_64-linux-gnu/libssl.so.1.1(OPENSSL_init_ssl+0x5b) [0x7f60a006757b]
/lib/x86_64-linux-gnu/libpq.so.5(+0x26304) [0x7f60a00ea304]
/lib/x86_64-linux-gnu/libpq.so.5(PQconnectPoll+0xe80) [0x7f60a00d4ec0]
/lib/x86_64-linux-gnu/libpq.so.5(+0x11fd7) [0x7f60a00d5fd7]
/lib/x86_64-linux-gnu/libpq.so.5(PQconnectdb+0x38) [0x7f60a00d9048]
/usr/local/lb/lbg_ve32/lib/python3.2/site-packages/psycopg2/_psycopg.cpython-32m.so(+0x10939) [0x7f60a012e939]
/usr/local/lb/lbg_ve32/lib/python3.2/site-packages/psycopg2/_psycopg.cpython-32m.so(+0x117a2) [0x7f60a012f7a2]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(+0xab58c) [0x7f60a11c558c]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyObject_Call+0x5b) [0x7f60a1174dcb]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(_PyObject_CallFunction_SizeT+0xd2) [0x7f60a1175192]
/usr/local/lb/lbg_ve32/lib/python3.2/site-packages/psycopg2/_psycopg.cpython-32m.so(+0xbace) [0x7f60a0129ace]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x76e3) [0x7f60a1210b53]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalCodeEx+0x733) [0x7f60a12115e3]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(+0x81f92) [0x7f60a119bf92]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyObject_Call+0x5b) [0x7f60a1174dcb]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0xfb9) [0x7f60a120a429]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalCodeEx+0x733) [0x7f60a12115e3]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(+0x81f92) [0x7f60a119bf92]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyObject_Call+0x5b) [0x7f60a1174dcb]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0xfb9) [0x7f60a120a429]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalCodeEx+0x733) [0x7f60a12115e3]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x65f1) [0x7f60a120fa61]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x670c) [0x7f60a120fb7c]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalCodeEx+0x733) [0x7f60a12115e3]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(+0x81eaf) [0x7f60a119beaf]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyObject_Call+0x5b) [0x7f60a1174dcb]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(+0x7033c) [0x7f60a118a33c]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyObject_Call+0x5b) [0x7f60a1174dcb]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(+0xacf47) [0x7f60a11c6f47]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(+0xab58c) [0x7f60a11c558c]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyObject_Call+0x5b) [0x7f60a1174dcb]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x4106) [0x7f60a120d576]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x670c) [0x7f60a120fb7c]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x670c) [0x7f60a120fb7c]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalCodeEx+0x733) [0x7f60a12115e3]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x65f1) [0x7f60a120fa61]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalCodeEx+0x733) [0x7f60a12115e3]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x65f1) [0x7f60a120fa61]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x670c) [0x7f60a120fb7c]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalCodeEx+0x733) [0x7f60a12115e3]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x65f1) [0x7f60a120fa61]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x670c) [0x7f60a120fb7c]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalCodeEx+0x733) [0x7f60a12115e3]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x65f1) [0x7f60a120fa61]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalCodeEx+0x733) [0x7f60a12115e3]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(+0x81f92) [0x7f60a119bf92]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyObject_Call+0x5b) [0x7f60a1174dcb]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0xfb9) [0x7f60a120a429]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalCodeEx+0x733) [0x7f60a12115e3]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x65f1) [0x7f60a120fa61]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalFrameEx+0x670c) [0x7f60a120fb7c]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyEval_EvalCodeEx+0x733) [0x7f60a12115e3]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(+0x81eaf) [0x7f60a119beaf]
/usr/local/lb/py32/lib/libpython3.2m.so.1.0(PyObject_Call+0x5b) [0x7f60a1174dcb]
*** end of backtrace ***
重要提示:

应用程序似乎正在“混合”OpenSSL 1.0.X组件和OpenSSL 1.1.X组件

/usr/local/ssl/lib/libcrypto.so.1.0.0(+0x12254c) [0x7f60a147054c]
/usr/local/ssl/lib/libcrypto.so.1.0.0(lh_insert+0x56) [0x7f60a14707e6]
/usr/local/ssl/lib/libcrypto.so.1.0.0(OBJ_NAME_add+0x74) [0x7f60a13bbc84]
/lib/x86_64-linux-gnu/libssl.so.1.1(+0x36392) [0x7f60a0067392]
/lib/x86_64-linux-gnu/libcrypto.so.1.1(CRYPTO_THREAD_run_once+0xd) [0x7f609ff3d78d]
/lib/x86_64-linux-gnu/libssl.so.1.1(OPENSSL_init_ssl+0x5b) [0x7f60a006757b]

这个问题我真的需要帮助。。。我什么都试过了


谢谢=D

原因:大多数现代版本的Ubuntu服务器都将PostgreSQL 9.4配置为在1.0以上的版本中使用ssl-tls,该版本与使用OpenSSL拥有ssl资源的Python 3.2不兼容。当Python 3.2尝试使用ssl连接到PostgreSQL 9.4时,第一个使用的库(psycopg2?)尝试加载与客户端兼容的更现代版本的OpenSSL,然后,应用程序开始使用两个不同版本的OpenSSL运行—其中一个版本与Python 3.2不兼容—这会导致应用程序加载中出现分段错误

解决方案:我们可以将PostgreSQL 9.4与1.0版本的ssl一起使用,或者禁用此功能。我们选择了禁用“ssl”。下面的过程将PostgreSQL 9.4配置为不要像使用PostgreSQL 9.4的旧版本发行版那样使用ssl建立连接

程序:

打开文件
/var/lib/pgsql/9.4/data/postgresql.conf
-路径可能不同-并注释掉这些行:

ssl=on#(更改需要重新启动)

ssl_cert_file='/etc/ssl/certs/ssl cert snakeoil.pem'(更改需要重新启动)

。。。而且

ssl_key_file='/etc/ssl/private/ssl cert snakeoil.key'(更改需要重新启动)

重新启动Python 3.2应用程序和PostgreSQL 9.4

对于PostgreSQL 9.4,可以使用以下命令重新启动它

systemctl stop postgresql
sleep 2
systemctl start postgresql
完成!
谢谢=D

您必须使用OpenSSL 1.0有什么原因吗?如果没有,您可以使用
sudo-H pip3 install uWSGI
sudo apt install uWSGI
安装uWSGI。它是一个遗留应用程序,其所有组件都使用OpenSSL 1.0.X。在我看来,在编译过程中缺少一些配置,因此uWSGI使用的是“/usr/local/ssl/lib/libssl.so.1.0.0”(OpenSSL 1.0.X),而不是“/usr/lib/x86_64-linux-gnu/libssl.so.1.1”(OpenSSL 1.1.X)。谢谢=D@Selcuk请参阅此线程,它解决了一个非常类似的问题:=这是有道理的。这可能是一个奇怪的建议,但是你有没有可能在一个发行版上用OpenSSL 1.0.x(比如Ubuntu 16.04)运行这个系统呢?那么,你可以试着运行一个预构建的uWSGI。可能是在Ubuntu 16机器上编译的。抱歉,SEGFULTS很难调试。