Fedora 40でRustサーバーが落ちる場合の回避策

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は先進的で新しい機能とかも早く使えるけど、その分こういうトラブルも起きるんだよね…

コメントを残す

Your email address will not be published.


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。