Fedora 40にアップグレードしてから、起動直後にRustのサーバーがsegmentation faultで落ちる症状が出るようなった。
どうやらFedora 39までOS標準で備わっていたzlibというライブラリが、Fedora 40になってzlib-ngに置き換わっているのが原因の模様。
zlibをビルドしてプリロードしてやると、問題を回避できることが判明。
他にFedora 40で動かないアプリでも使えるかもしれないし、将来、他のディストリビューションで同じような置き換えが起きた際に使えるかもしれない。
ビルド:
mkdir zlib
cd zlib
wget https://www.zlib.net/current/zlib.tar.gz
tar -xvf zlib.tar.gz
cd zlib-1.3.1/
./configure
make
LD_PRELOADを追加してサーバーを起動
LD_PRELOAD=/path/to/zlib/zlib-1.3.1/libz.so ./runds.sh
Carbonを使っている場合は、/carbon/tools/environment.shの下記の行を編集
export LD_PRELOAD="${CARBONENV_BASEDIR}/libdoorstop.so"
↓
export LD_PRELOAD="/path/to/zlib/zlib-1.3.1/libz.so:${CARBONENV_BASEDIR}/libdoorstop.so"
一応zlib-ngでもzlibと互換性を持たせてるらしく、zlib-ng-compatというパッケージもあるが、インストールしても変わらなかった。
Fedoraは先進的で新しい機能とかも早く使えるけど、その分こういうトラブルも起きるんだよね…
最近のコメント