結論
Ubuntu 18.04.2 LTS上でvenvを使っていて、pipでpsycopg2をインストールしている場合に、apt upgradeを行うと、uwsgi が急にSegmentation Faultを起こすようになる。
対処
psycopg2
または psycopg2-binary
をインストールし直す。
もしかしたら直接指定してバージョンアップでも治るかもしれない。
自分の場合は psycopg2-binary
だった。
対応方法
venvを利用している場合は、venvの仮想環境を有効化してから下記のコマンドを実行する
pip uninstall psycopg2 pip install psycopg2
または
pip uninstall psycopg2-binary pip install psycopg2-binary
以上の対応で入るバージョンが上がる。
# pip freeze | grep psycopg2 psycopg2-binary==2.7.4 ↓↓↓ # pip freeze | grep psycopg2 psycopg2-binary==2.8.3
その他 参考
uwsgiのログでは次のように出ていた。
!!! uWSGI process 2071 got Segmentation Fault !!! *** backtrace of 2071 *** /var/www/venv/bin/uwsgi(uwsgi_backtrace+0x2a) [0x555e9a9114ea] /var/www/venv/bin/uwsgi(uwsgi_segfault+0x23) [0x555e9a9118d3] /lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7f148a724f20] /var/www/venv/lib/python3.6/site-packages/psycopg2/.libs/./libssl-3309e9a3.so.1.0.2n(ssl3_cleanup_key_block+0xb) [0x7f1484ac3ccb] /var/www/venv/lib/python3.6/site-packages/psycopg2/.libs/./libssl-3309e9a3.so.1.0.2n(ssl3_clear+0x16) [0x7f1484ac15c6] /var/www/venv/lib/python3.6/site-packages/psycopg2/.libs/./libssl-3309e9a3.so.1.0.2n(tls1_clear+0x9) [0x7f1484acd219] /usr/lib/x86_64-linux-gnu/libssl.so.1.1(SSL_new+0x3f2) [0x7f148b411a22] /var/www/venv/lib/python3.6/site-packages/psycopg2/.libs/libpq-389351b6.so.5.10(+0x23349) [0x7f1484d58349] /var/www/venv/lib/python3.6/site-packages/psycopg2/.libs/libpq-389351b6.so.5.10(+0x248e5) [0x7f1484d598e5] /var/www/venv/lib/python3.6/site-packages/psycopg2/.libs/libpq-389351b6.so.5.10(PQconnectPoll+0xb00) [0x7f1484d43600] /var/www/venv/lib/python3.6/site-packages/psycopg2/.libs/libpq-389351b6.so.5.10(+0xf099) [0x7f1484d44099] /var/www/venv/lib/python3.6/site-packages/psycopg2/.libs/libpq-389351b6.so.5.10(PQconnectdb+0x1f) [0x7f1484d46e5f] /var/www/venv/lib/python3.6/site-packages/psycopg2/_psycopg.cpython-36m-x86_64-linux-gnu.so(+0x12621) [0x7f1484f97621] (以下省略)
その他のバージョン
# cat /etc/os-release NAME="Ubuntu" VERSION="18.04.2 LTS (Bionic Beaver)"
StackOverflowでも同じ話があった