そーだいなるらくがき帳

そーだいが自由気侭に更新します。

Ubuntu 18.04.2 LTSでapt upgradeするとuwsgiが死んでDjangoが動かなくなったときの対応

結論

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でも同じ話があった

stackoverflow.com