タグ: 正規表現
- 作成者投稿
- 2024年11月6日 11:54 pm #32054yasuji参加者
江村様
いつもお世話になっております。
yasujiです。2.3GB以上のXMLファイルを開いて[正規表現で検索する追加行数(L)]を合計行数に設定して、正規表現検索を行うと検索処理進捗の97%付近でクラッシュするクラッシュバグが発生する。回避する方法がない。
上記不具合の発生の再現手順は下記の通りです。
〔対象〕
v24.4.1 (64bit)
v24.4.901 (64bit)〔使用環境〕
CPU : AMD Ryzen 9 3900X 12-Core Processor 3.80 GHz
RAM : 128 GB
OS : Windows 10 Pro 64bit 22H2 build 19045.5011
MB : ASUS PRIME X570-PRO〔再現手順〕
0.事前準備
WikipediaのDatabase backup dumpsのファイルをダウンロードして、それぞれ展開する。展開のファイルサイズは、非常に大きいためディスクの空き容量に注意すること。
jawiki-20241020-abstract.xml.gz (file size: gz 260.8 MB, xml 2.3GB)
jawiki-20241020-pages-meta-current.xml.bz2 (file size: gz 4.7 GB, xml 21.9GB)なお、上記のファイルは、2024/11/06時点ではダウンロードできるが、3カ月程度でローテーションするため、最新の日付のURLからダウンロードする必要がある。
1.EmEditor 64bit ポータブル版を初期状態で起動
zipファイルから展開して、起動する。
初回のエディション選択は、Professionalを選択する。2.ファイルを開く
下記の(A)、(B)のファイルについて、3.以降の手順を実行する。
(A)0.のjawiki-20241020-abstract.xmlを開く。
(B)0.のjawiki-20241020-pages-meta-current.xmlを開く。開く処理が終わるまで待つ。
3.検索を開いて、下記の通り設定する
[検索する文字列]
<[a-z]+>
〔チェックボックス〕
[大文字と小文字を区別する(C)]:ON
[一致する文字列を数える(U)]:ON
上記以外のチェックボックスすべて:OFF
〔ラジオボタン〕
[正規表現(X)]:ON[高度]
〔チェックボックス〕
[CRとLFを区別する(T)]:ON
[次を検索/前を検索で重ならない文字列のみ一致する(F)]:ON
上記以外のチェックボックスすべて:OFF
[正規表現エンジン(G)]:Onigmo.Perl
[正規表現で検索する追加行数(L)]:20871119[正規表現で検索する追加行数(L)]は、開いているファイルの合計行数を設定する。
ファイルごとの合計行数は下記の通り。
(A)20871119
(B)3070993094.[次を検索]を実行する
5.結果の確認
検索処理が完了する前にクラッシュし、クラッシュレポートが表示され強制終了になる。
3.の[正規表現エンジン(G)]が、 Boost.Regex の場合でも同じ事象が発生する((A)のファイルで確認済み)。このクラッシュバグは、下記の条件2つを満たす場合に発生確率100%で検索処理進捗の97%付近で発生する。
(1)開くテキストファイルサイズが、2.3GB以上。
(2)[正規表現で検索する追加行数(L)]が、開いているテキストファイルの合計行数(ステータスバー右下表示)以上を設定(右下表示)[正規表現エンジン(G)]が Onigmo.Perl, Boost.Regex 以外の検索エンジンについては試していない。
スレッド数を最小にすることで改善すると考えて、メインメニュー [ツール] -> [カスタマイズ] -> [高度]を開き、[スレッド数(N)]を 初期値(自動(24)) から 1 へ変更したが同様に発生する。
2024年11月16日 8:11 am #32065Yutaka Emuraキーマスターいつもお世話になっております。江村です。
こちらでも問題が再現しましたので、既に、こちらでは修正いたしました。次に公開されるバージョンでは修正されています。
よろしくお願いいたします。
2024年11月17日 12:41 am #32074yasuji参加者江村様
いつもお世話になっております。
yasujiです。承知しました。次の新バージョンが公開されたときに確認します。
よろしくお願いします。
2024年11月21日 11:45 pm #32089yasuji参加者江村様
いつもお世話になっております。
yasujiです。v24.4.902 (64bit)について、上記の不具合の修正確認を行った結果、下記の通り新しい不具合が発生しております。
再度、修正対応をお願いします。〔確認結果〕
(A)0.のjawiki-20241020-abstract.xml
[正規表現エンジン(G)]:Boost.Regex
正常完了して問題なし[正規表現エンジン(G)]:Onigmo.Perl
正常完了して問題なし(B)0.のjawiki-20241020-pages-meta-current.xml
[正規表現エンジン(G)]:Boost.Regex
正常完了して問題なし[正規表現エンジン(G)]:Onigmo.Perl
検索中の99%で、下記のアクセス違反例外のメッセージが表示されて、検索が正常に完了しない。
—–
「Onigmo正規表現エンジンの内部でアクセス違反例外が発生しました。この問題を回避するには、正規表現の簡潔化を試みてください。[OK]をクリックすると、無視して継続します。[キャンセル]をクリックすると、異常終了します。」
[OK][キャンセル]
—–
[OK]を押下した場合:
応答なしになり、強制終了する以外に方法がなくなる。[キャンセル]を押下した場合:
クラッシュレポートが表示されて、終了する。よろしくお願いします。
- 作成者投稿
- このトピックに返信するにはログインしてください。