grepの文字数制限を解除した時、grepが不No.32060
緒方聡 さん 13/03/05 15:42
 
環境:
- Windows 7 64bit 日本語版
- メインメモリ 8GB
- 秀丸 V8.21 64bit版

手順:
1. UTF-16BE(BOM あり)のファイルを 7 万ファイルほど用意(内容は任意)
2. サイズは小さいもので 2KB、大きいもので 200KB 程度
3. すべてのファイルは改行が一切ない
4. ヒットしない文字列でこれらファイルに対して grep

結果:
しばらくは正常に動作するのですが、grep が進むとメモリ不足や不正終了を示すエ
ラーダイアログが発生します。私の環境では 4〜5000 ファイルほど grep したとこ
ろで確実に再現します。システムモニターでメモリ使用量を確認しながら grep を行
ったところ、それほど多くのメモリが使われているようには見えなかったのですが
(全体使用量 2.5GB 程度)、エラーダイアログをそのまま放置して他の作業を継続
すると、OS がハングアップしてしまったので、確認時は気を付けてください。すぐ
にダイアログを閉じた場合は問題ありませんでした。


grep が遅くなるのは致し方ないとして、待てば最後まで終わるように改善すること
はできるでしょうか。

[ ]
RE:32060 grepの文字数制限を解除した時、No.32063
秀丸担当 さん 13/03/05 17:30
 

バグ情報ありがとうございます。
そうなってしまうのはまずい問題です。
再現できないか調査します。

同じような環境にして、V8.21で試してみて、タスクマネージャでメモリ使用量
に注視しながらみていたところ、最初のうちは少ない変化でしたが、数千くらい
いったところで、急にメモリ使用量が多く増えることがありました。
V8.30β26で試してみたところでは再現しませんでした。
たまたまだったのかもしれず、もうすこし確認します。
関連する修正点があったかどうかも含めて調べます。

[ ]
RE:32063 grepの文字数制限を解除した時、No.32077
秀丸担当 さん 13/03/06 12:02
 

さらに調査したところ、V8.30βで修正があることがわかりました。
それまでのバージョンは確かに問題がありました。
フォント作成のメモリリークが今まであって、それが修正され、V8.30βからは
起きなくなっていました。
Unicodeでなくても問題自体はありますが、Unicodeのファイルを扱うときにフォ
ントを作成しなおすため、問題が起きやすくなっていました。
現在まだβ版ですがV8.30で対応させていただきます。

[ ]
RE:32077 grepの文字数制限を解除した時、No.32092
緒方聡 さん 13/03/08 17:30
 
ご連絡ありがとうございます。
v8.30 を楽しみ見しています。

[ ]