今、仕事が無いので手習いでサーバなど組んで遊んでいるのだけれど、
gccで正常終了するソースがclangだとcore吐いて落ちる状況に遭遇。

環境を変えるのはちょっと嫌な感じなので、
とりあえず仮想環境でclang3.2にして状況が変わるか確認することに。

が、待てど暮らせどportsのmakeが完了しない。
画面の表示は

Compiling ASTMatchFinder.cpp for Release build

のまま止まっており、cc1plusのCPU使用率も1%を切っているような状況。

当初は、make.confのCPUTYPE設定が悪さをしているのかと思ったのだけれど、
make.confの設定を弄っても一向に状況が改善しない。
OSに入ってる方のclang3.1でmakeできないかと思ったけれど、
portsのMakefileの記述がGCCを使うようになっているっぽいので、
無駄な試みに終わる。

小一時間悩んだ挙句
もしかしたら、メモリ確保できなくて空くのをずっと待ってんじゃなかろうか?
と思って、仮想環境に割り当てるメモリを384MBから768MBに変えたら……
どうやらビンゴっぽい。
無事にmakeが通った。
どうせsshでしか接続しないのでメモリケチったのが不味かった。

で、長い長いmakeが完了した後、
makeの為だけに必要だったPythonのパッケージを削除して準備完了。

さっそくclang3.2でも問題が再現するか確認する。
お、core吐かなくなった。

やっぱ、自分のソースが間違ってた訳ではなかったんだな。
とひと安心。
けど、あんまりほめられたコードでは無いのかもしれない。

※追記
 後日clang3.3がリリースされ、メモリ768MBではビルドがまた固まるようになった。
 1.5GBでも固まるので、恐らく3~4GB位ないとビルドは通らないと思われる。

コメントを残す

メールアドレスが公開されることはありません。