morit****@razil*****
morit****@razil*****
2007年 7月 9日 (月) 16:51:54 JST
森です。 >>> Shingo Kawamura さんは書きました: > 河村です。お世話になっております。 > > 3パターン程実行してみました。 お手数おかけします。 > >> ・/3GBスイッチを入れて実行してみる(論理空間が関係なければ無駄になりそうですね) > 転置ファイルが3GB分作成されました。 > --- > 194262.SEN 16,512KB > 194262.SEN.i 83,648KB > 194262.SEN.i.c 524,096KB > 194262.SEN.i.c.001 524,288KB > 194262.SEN.i.c.002 524,288KB > 194262.SEN.i.c.003 523,776KB > 194262.SEN.i.c.004 519,936KB > 194262.SEN.i.c.005 280,320KB > 194262.SEN.i.c.006 278,784KB > 194262.SEN.l 8,320KB > --- > 最終的には > 07/06:08:40:22.337|A| MapViewOfFile failed #8 > 07/06:08:40:22.437|A| io_win_map(8183, 287121676) failed!! > というエラーで落ちたようです。 > > やはり、論理アドレス空間でしょうか… そのようですね。 mapしたメモリが意図したように解放されていないようです。 もし再度動かす機会がありましたら、 以下のようにlib/io.cにパッチを当てて試してみて頂けると、 切り分けのヒントになります。 UnmapViewOfFileして、CloseHandleすれば、 論理アドレス空間が再利用可能になると考えていたのですが、 根本的に勘違いしているのかも知れません。。 Index: lib/io.c =================================================================== --- lib/io.c (リビジョン 484) +++ lib/io.c (作業コピー) @@ -811,7 +811,7 @@ if (res) { mmap_size += length; } else { - SEN_LOG(sen_log_alert, "MapViewOfFile failed #%d", GetLastError()); + SEN_LOG(sen_log_alert, "MapViewOfFile failed #%d <%d>", GetLastError(), mmap_size); } /* MUTEX_UNLOCK(fi->mutex); */ return res; @@ -918,7 +918,7 @@ if (res) { mmap_size += length; } else { - SEN_LOG(sen_log_alert, "MapViewOfFile failed #%d", GetLastError()); + SEN_LOG(sen_log_alert, "MapViewOfFile failed #%d <%d>", GetLastError(), mmap_size); } return res; }