32bitのmonoは64bitのiノード番号を扱うことが出来ない
※2012年12月1日、続き。
C#で自作したツールを使ってファイルを処理しようとしたところ、何もせずに終了してしまったのでソースをチマチマと弄って原因を探ってみたら、System.IO.Directory.GetFilesメソッドの戻り値にファイル名が含まれていない事が分かったので、それらのファイルを調べてみた結果、どうやらiノード番号が4294967295 (UINT_MAX) を超えるファイルがあるとエラーも表示せずに終了するらしい、という結論に達した。
再現方法は次の通り。
まず、64bitのUbuntuで以下を行う。
次に、32bitのUbuntuで以下を行う。