ngenが終わらない

自作ライブラリに対してngenを使用すると、CPU使用率が上がったまま、ずっとngenが終了しないことがあった。

幸い、自作ライブラリのソースはsubversionで管理していたので、過去のソースを元にビルドしたアセンブリに対して、片っ端からngenをかけてみると、原因らしきコードが見つかった。

public static Symbol operator +(Symbol l, Symbol r)
{
	return SymbolFactory.Sequence(l, r);
}
public static Symbol operator +(SymbolBase l, Symbol r)
{
	return SymbolFactory.Sequence((Symbol)l, r);
}

上記の演算子オーバーロードをやめると、ngenはすぐに完了するようになった。

ただ、単に演算子オーバーロードさせただけでは、ngenが終わらなくなるような事は無いので、より具体的な原因は不明。