/usr/src 下で make buildword 実施中。
気付くと、以下のメッセージが表示されていて、ビルドは停止。
*** Signal 9 Stop. make[6]: stopped in /usr/src/lib/msun/tests *** Error code 1 Stop. make[5]: stopped in /usr/src/lib/msun/tests *** Error code 1 Stop. make[4]: stopped in /usr/src/lib/msun *** Error code 1 Stop. make[3]: stopped in /usr/src/lib *** Error code 1 Stop. make[2]: stopped in /usr/src *** Error code 1 Stop. make[1]: stopped in /usr/src *** Error code 1 Stop.
これは何?signal 9 って何?
Intel マルチコアCPUなら遅くても一日あればビルド終了なんですが、Pentium III 700MHz のP3B-F 上なので、ビルド開始から既に4日くらい経過しています。それが、意味不明のメッセージで停止とは、ガックリ。何をどう対策すればいいのか?
(偶然)システムログを見てみると、「pid 94963 (cc), jid 0, uid 0, was killed: failed to reclaim memory」とありました。reclaim memory って何だ?
また古いSIMMの故障なの?と思ったものの、ログの少し上の方を見てみると、
Jul 21 05:43:43 p3bf kernel: swap_pager: out of swap space
Jul 21 05:43:44 p3bf kernel: swp_pager_getswapspace(18): failed
Jul 21 05:43:46 p3bf kernel: pid 94963 (cc), jid 0, uid 0, was killed: failed to reclaim memory
「out of swap space」の文字が。。。。。まさか、まさか。
なんとメモリ不足が発生。htop でプロセスを監視していて、私が見ている最中は、スワップどころかメモリをほとんど使っていなかった。それが突然メモリ不足で終了していたとは。。。
スワップは2GB取っていたんですけど、スワップ追加を考えないといけない。
スワップ用に別HDD上の2GBパーティションを追加して、合計4GBのスワップが使えるように設定し直して buildworld をやり直し。
Signal 9 で停止したあたりになると、HDDのLEDランプが点灯しっぱなしに。使用済みスワップ容量をモニターしていると、先ほどまではメガバイト単位だったスワップが、気が付くと3GBを突破していました。
4GBで足りるのか?と不安になりましたが、3GBあたりでピークを迎え、10分後には再びメガバイト単位になりました。
一体何がそんなにメモリを食う?よくわかりませんでしたけど、リロケータブルライブラリーを作っていたんじゃないかと思いました。現在は、そこを突破して、別のビルドに進んだところ。
余談ですが、/usr/src 下でのビルド作業は、一度停止してしまうとデフォルトでは一からやり直しになってしまいます。
継続させたい場合は、
make -DNO_CLEAN buildworld
と、「-DNO_CLEAN」を付けると make clean を止めることが出来ます。