ま、そんなところで。

ニッチな技術系メモとか、車輪を再発明してみたりとか.

VirtualBox の Guest OS 上でビルドすると internal compiler error が多発する現象 (Ubuntu 22.04.1)

Guest OS 上でビルド中 internal compiler error が発生してビルドできない・・・

ある日突然仮想マシン上の Guest OSでビルドすると internal compiler error が多発する現象に遭遇.

apportのログを見ると、ビルド中に Segmentation Fault が発生してビルドが中断している模様.
しかし、コードに問題があるわけではなく発生箇所は毎回変化し、ビルドを再開すると、しばらくビルドが進んでまた internal compiler error が発生.

これ、 通常であればコンパイラバグ、ハードウェアの問題かカーネルバグを疑うべきところなんですが・・・

  • 今回は、エラーが毎回違う場所で発生しているので、コンパイラのバグの可能性は薄い.
  • Guest OS でのみ発生しており、Host OS 側は何の問題もありませんから、マシンのハードウェアの可能性は薄い.
  • Guest OS のメモリ不足も疑うべきですが、Guest OS へのメモリ割当ては16Gと十分でこれも可能性は薄い.

となると・・残るはVirtualBoxが怪しいということに・・

Ubuntu公式リポジトリVirtualBoxとホスト側カーネルの不整合が原因

VirtualBoxUbuntu 22.04.1 で似たような問題が起きてないか漁っていると・・・
以下に同じ現象がpostされているのを発見.

askubuntu.com

この現象、 ホスト側カーネルlinux-image-5.15.0-47-generic だと発生し、一つ前のカーネル linux-image-5.15.0-46-generic では発生しないそうで.
カーネルバージョンとvirtualboxのバージョンの組み合わせで発生する問題なのだとか・・・.

公式リポジトリのパッケージの組み合わせで発生しちゃうので、apt-get dist-update (apt full-upgrade) したらある日突然に、新規で環境を作る場合はいきなりこの現象に遭遇することになるわけです.
これは結構・・心臓に悪いですね・・・.

公式リポジトリVirtualBoxOracle提供のものに変更すれば解決.

解決にはOracleが提供するVirtualBoxの最新版に変更すればよいようです.

Ubuntu公式リポジトリ由来の virtualbox と関連パッケージをすべて削除して、Oracle版のもののみをインストールします.
aptの依存関係による自動削除に任せるとUbuntu公式由来の依存パッケージが残ってしまうことがあるので、packageの依存関係を確認して、削除するパッケージを各々個別に指定して確実に削除する必要があります .
Ubuntu公式リポジトリ由来のパッケージが残っていると、ゲストOS起動時にエラーになったりCrashしたりしますので注意.

# Oracleのリポジトリと公開鍵を追加
$ sudo echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian jammy contrib" > /etc/apt/sources.list.d/virtualbox.list
$ wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --dearmor --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg
# パッケージ情報更新
$ sudo apt update

# 公式リポジトリ由来のvirtualboxと関連パッケージを明示的に削除.
$ sudo apt purge virtualbox virtualbox-dkms virtualbox-ext-pack virtualbox-qt
# Oracleのvirtualboxをインストール
$ sudo apt install virtualbox-6.1

Oracle版の VirtualBox を立ち上げて Guest OS が問題なく起動できれば無事完了です.
これで、ビルド時に internal compiler error が頻発する現象も解消されました.

参考サイト

These articles have been very helpful for me. thanks!!