- 作成者投稿
- 2024年11月22日 2:55 am #32090yasuji参加者
江村様
いつもお世話になっております。
yasujiです。2.3GB以上のXMLファイルを初めて(ディスクキャッシュにない状態)開くと、開いた直後に右下に表示される合計行数が、本来の合計行数より大幅に増加して表示され、XMLテキストの一部の連続した行が重複した状態でファイルが開かれる致命的なバグです。
この不具合は、「2.3GB以上のXMLファイルの正規表現検索中にクラッシュする」の修正確認中に、ファイルを開いた際の行数が一致しているかなどを精密に確認していたことで、このバグの発見に至りました。事前にテキストファイルの合計行数を把握していないと、発見不可能な致命的なバグです。やはり、EmEditorの重要な挙動についての細かい仕様の確認は、重要であると改めて実感いたしました。
具体的には、jawiki-20241020-abstract.xmlは、合計行数は20,871,119行ですが、v24.4.902で初めて(ディスクキャッシュにない状態)開くとステータスバーの行数表示欄が「0/21,809,459 行」と表示されます。その状態で別名保存し、WinMergeでテキスト差分を確認したところ、大きな差分が見つかりました。
その一例として、下記の文字列をオリジナルXMLファイルと別名保存XMLファイルで検索した結果、オリジナルファイルでは1件のみですが、別名保存したXMLファイルでは2件見つかりました(編集していなのに開いただけでユーザの意図しない重複行が発生する)。
<sublink linktype="nav"><anchor>ああっ女神さまっ 小っちゃいって事は便利だねっ</anchor>
ただし、毎回同じ文字列が重複するかはわかりません。念のため、HDDの不良セクタやI/Oのエラーの可能性を疑いましたので、Notepad++ v8.7.1 64bitで同じ手順と条件で検証しました。
しかし、このような現象は発生せず正しい合計行数で読み込まれて表示されることを確認しました。拡張子依存があるか全くわからないため、TXTファイルにおいても同じ現象が発生しないかのご確認もお願いいたします。
XMLファイルだけなのか、.xmlを.txtに修正したTXTファイル、XMLデータのない通常のTXTファイルなどでも発生するのかの調査情報が欲しいです。この不具合の影響範囲を簡易的に知るため、過去のv24.3.0、v24.2.1も確認しました。
その結果、v24.4.902, v24.2.1, v24.3.0, v24.2.1のすべてでこの不具合が発生することを確認しました。上記不具合の発生の再現手順は下記の通りです。
〔対象〕
v24.2.1 (64bit)
v24.3.0 (64bit)
v24.4.1 (64bit)
v24.4.902 (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
HDD : ST8000DM004-2CX188 (8TB, D:)(テスト用ファイルはすべてこのドライブ上に保存して使用した)
Windows 10設定:
[高速スタートアップを有効にする]:OFF
設定方法は、FMVサポート : 富士通パソコン – FMV Q&A – [Windows 10] 高速スタートアップを無効にする方法を教えてください。を参照。
※ONの場合の再起動でも再現するかは検証していません。〔再現手順〕
0.事前準備
WikipediaのDatabase backup dumpsのファイルをダウンロードして、それぞれ展開する。展開のファイルサイズは、非常に大きいためディスクの空き容量に注意すること。
jawiki-20241020-abstract.xml.gz (file size: gz 260.8 MB, xml 2.3 GB)
jawiki-20241020-pages-meta-current.xml.bz2 (file size: bz2 4.7 GB, xml 21.9 GB)
enwiki-20241020-abstract.xml.gz (file size: gz 847.7 MB, xml 6.7 GB)なお、上記のファイルは、2024/11/22時点ではダウンロードできるが、3カ月程度でローテーションするため、最新の日付のURLからダウンロードする必要がある。
1.EmEditor 64bit ポータブル版を初期状態で起動
zipファイルから展開して、起動する。
初回のエディション選択は、Professionalを選択する。2.ファイルを開く
EmEditorのバージョンを固定して、下記の(A)、(B)、(C)のファイルについて、3.以降の手順を実行する。
(A)0.のjawiki-20241020-abstract.xmlを開く。
(B)0.のjawiki-20241020-pages-meta-current.xmlを開く。
(C)0.のenwiki-20241020-abstract.xmlを開く。開く処理が終わるまで待つ。
正しい合計行数は下記の通り。Notepad++ v8.7.1 64bitで確認済み。
(A)jawiki-20241020-abstract.xml
合計行数:20,871,119 行
(B)jawiki-20241020-pages-meta-current.xml
合計行数:307,099,309 行
(C)enwiki-20241020-abstract.xml
合計行数:85,969,886 行3.ステータスバーの行数確認
ステータスバーの最右の「行数」表示欄を確認し、必要に応じて右クリックでコピーして、別に保存する。4.テキスト編集画面の行数確認
Ctrl+Endキーを押下して、テキストの最下行へ移動する。
ステータスバーの「カーソル位置」表示欄を確認し、必要に応じて右クリックでコピーして、別に保存する。5.EmEditorの再起動
一つのファイルの確認が完了したらEmEditorを終了して、もう一度起動させる。EmEditorのバージョンを固定して、(A)、(B)、(C)の全てについて2.~5.を実行する
6.Windowsの再起動
(A)、(B)、(C)を順番に開き終わったら、Windowsを再起動する。
再起動後は、次のEmEditorのバージョンを起動して、2.から実行する。ただし、再起動せずにEmEditorのみを再起動して、(A)、(B)、(C)のいずれかを2回目に開くとステータスバーの最右の「行数」表示欄に正しい合計行数が表示される。
したがって、ディスクキャッシュにファイルデータがあるかどうかで、このバグが発生するか決まる。他の要因はわかりません。7.結果の確認
合計行数が増加するバグが発生したファイルとEmEditorのバージョンは下記の通りでした。(A)jawiki-20241020-abstract.xml
v24.4.902, v24.2.1, v24.3.0, v24.2.1(B)jawiki-20241020-pages-meta-current.xml
v24.3.0(C)enwiki-20241020-abstract.xml
v24.4.902, v24.2.1, v24.3.0, v24.2.1〔詳細情報〕
「行数」は、ファイルを開く処理が完了後のステータスバーの最右の「行数」表示内容。
「最終行カーソル位置」は、ファイルを開く処理が完了後にCtrl+Endキーを押下した後のステータスバーの「カーソル位置」表示内容。v24.4.902 jawiki-20241020-abstract.xml 行数: 0/21,809,459 行 最終行カーソル位置: 21,809,459行, 1桁 jawiki-20241020-pages-meta-current.xml 行数: 0/307,099,309 行 最終行カーソル位置: 307,099,309行, 13桁 enwiki-20241020-abstract.xml 行数: 0/86,697,813 行 最終行カーソル位置: 86,697,813行, 1桁 v24.2.1 jawiki-20241020-abstract.xml 行数: 0/21,421,127 行 最終行カーソル位置: 21,421,127行, 1桁 jawiki-20241020-pages-meta-current.xml 行数: 0/307,099,309 行 最終行カーソル位置: 307,099,309行, 13桁 enwiki-20241020-abstract.xml 行数: 0/86,699,928 行 最終行カーソル位置: 86,699,928行, 1桁 v24.3.0 jawiki-20241020-abstract.xml 行数: 0/22,474,532 行 最終行カーソル位置: 22,474,532行, 1桁 jawiki-20241020-pages-meta-current.xml 行数: 0/313,971,853 行 最終行カーソル位置: 313,971,853行, 13桁 enwiki-20241020-abstract.xml 行数: 0/86,760,560 行 最終行カーソル位置: 86,760,560行, 1桁 v24.2.1 jawiki-20241020-abstract.xml 行数: 0/21,421,127 行 最終行カーソル位置: 21,421,127行, 1桁 jawiki-20241020-pages-meta-current.xml 行数: 0/307,099,309 行 最終行カーソル位置: 307,099,309行, 13桁 enwiki-20241020-abstract.xml 行数: 0/86,699,928 行 最終行カーソル位置: 86,699,928行, 1桁
2024年11月22日 1:15 pm #32094Yutaka Emuraキーマスターいつもお世話になっております。江村です。
3つのファイルをダウンロードし、再現手順に従って試してみましたが、初回、2回目、再起動後の3回目ともに、ファイルの行数に変化は見られませんでした。実際に開いた直後にステータス バーに表示されたファイルサイズと行数は以下の通りです。
jawiki-20241020-abstract.xml 2.32 GB (2,495,630,385 バイト), 20,871,118 行。 jawiki-20241020-pages-meta-current.xml 21.9 GB (23,544,648,340 バイト), 307,099,309 行。 enwiki-20241020-abstract.xml 6.70 GB (7,201,978,416 バイト), 85,969,885 行。
また、ファイルを開いて編集せずに「名前を付けて保存」を行い、保存前後のファイルを比較しましたが、変更はありませんでした。テストに使用した環境は、CPU: 13th Gen Intel Core i7-1360P 2.20 GHz、RAM 16.0 GB、EmEditor Version 24.4.902 です。
お使いのディスクに異常がないか確認していただけますでしょうか? Notepad++ で開いただけでは確認できないと思いますので、OSのツールや、chkdsk コマンドなどで、ディスクに問題がないか確認してみてください。
どうぞよろしくお願いいたします。
2024年11月23日 1:02 am #32095yasuji参加者江村様
いつもお世話になっております。
yasujiです。江村様の環境では、再現されなかったということで了解しました。
chkdsk /f d:
は、実行して改めて、再度手順を実行したところ、報告した通り再現しました。
おそらく、ディスクキャッシュが配置されるメモリに何か異常が何かある可能性がありそうです。以前、別のPCでUSB3.1接続のUSB HDDの接続状態が不安定でUSB HDDの取り外しや読込でわずかにエラーが出た経験がありました。この時は、1,2カ月ほどUSB HDDとUSBポート、ケーブルを疑ってあれこれ調べましたが、原因がさっぱり判明しませんでした。その後、別のきっかけでメモリのチェックを実行した結果、アドレス番地で5GB付近と、16GB付近に数バイトずつの故障があることが判明し、正常なメモリに交換したところUSB HDDの接続不具合が解消しました。
この時は、表面上の不具合は、USB HDDの不調という形で表れていたため、真の原因のメモリの部分故障による接続情報を管理するデータやキャッシュが壊れていたことにたどり着くのに6カ月かかってしまいました。私のPCのメモリは長期保証のもの使用しているのですが、上記の通り部分的に故障が発生した過去があったので、メモリが簡単には故障しないという考えが盲点になっていたようです。
今回の報告した事象については、メモリの部分故障の可能性があったにもかかわらず、気づくことができないで、お騒がせして大変申し訳ありませんでした。
言い訳になってしまいますが、ハードウェア故障は、ハードウェア1つならまだわかりやすいのですが、複数のハードウェアが関係して複合すると真因が霧にかかったように見えなくなり、簡単に見つけられない難しさがあります。よろしくお願いします。
2024年11月23日 1:30 am #32096Yutaka Emuraキーマスターいつもお世話になっております。江村です。
Windowsメモリ診断ツールなどで、メモリに異常がないかテストしてみてください。
どうぞよろしくお願いいたします。
- 作成者投稿
- このトピックに返信するにはログインしてください。