Solidityコンパイラのクラッシュ:古いバグによる完璧な嵐
2025-08-16

Solidityコンパイラで最近、不可解なクラッシュが発生しています。完全に有効なコードをコンパイルしても、セグメンテーションフォルトが発生します。原因は、G++ 11.4より前のバージョンで、C++20の下でBoostライブラリのboost::rational型を処理する際に発生する、12年もの間存在していたオーバーロード解決のバグにあることが判明しました。C++20の暗黙的な比較書き換えルールと相まって、無限再帰を引き起こし、スタックオーバーフローが発生します。この問題はSolidityコード自体ではなく、G++、Boost、C++20仕様の組み合わせによって発生する予期せぬ結果です。解決策は、Boostライブラリを1.75以上にアップグレードするか、G++を14以上にアップグレードすることです。
(osec.io)