[ 新規に投稿する ]

時々上書き保存時にファイルの末尾にゴミデータが付きます。No.37238
fzok4234 さん 19/03/16 13:38 [ コメントを投稿する ]
  現在、v8.88 64bit 浮動小数点数版を使用させていただいておりますが、編集中のスクリプトファイルに上書き時に末尾にゴミデータが追記されてしまい、スクリプトが正常に動作しなくなるという問題に悩まされております。

このファイルは文字コードShift-JIS、改行コードCrLfの.vbsファイルで、行数は軽く1万行を超えております。症状としては、ファイルの行数が変更されるような編集操作を行った後で上書き保存を行うと、時々ファイル末尾にゴミが追記されてしまうというものです。

特徴的なのは、上書き保存を行った直後はエディター上にはゴミの行は表示されておりませんが、一度秀丸エディターを終了させてから再度ファイルを開くとゴミの行が追記された状態になっています。しかも困ったことに、ここでこのゴミの行を消去しても終了させてから再度開くとそのゴミの行が復活してしまうということです。このため、一旦この症状が出たら他のエディターアプリでそのゴミの行を消去しなければいけなくなります。

また、ゴミの内容も特徴的で、ファイルの末尾のデータが繰り返し書き込まれているというものです。たとえば、本来のデータが、

0001: aaaaaaaa
0002: bbbbbbbb
0003: cccccccc
0004: dddddddd
0005: eeeeeeee
0006: ffffffff

という風に6行であるべきところが、実際には、

0001: aaaaaaaa
0002: bbbbbbbb
0003: cccccccc
0004: dddddddd
0005: eeeeeeee
0006: ffffffff
0007: eee
0008: ffffffff

という風に、5行目の途中から6行目にかけての末尾のデータが再び追記されて、存在してはならないはずの7行目以降が存在するという状態になります。

今までに取った対策としては、v8.87からv8.88へのアップデート、レジストリの
HKEY_CURRENT_USER\Software\Hidemaruo
キー以下の削除による設定のリセット、ファイルを別の場所にコピーしてから編集、果てはファイルのあるストレージをチェックディスクでエラーチェックするといった手を打ちましたが、いまだに解決していません。

どうか解決策のご教示よろしくお願いします。

[ ]
RE:37238 -追伸-No.37239
fzok4234 さん 19/03/17 11:46 [ コメントを投稿する ]
  問題の発生しているファイルは現在、
420,721バイト、
12610行、
となっております。

先ほど気付いたことですが、文字数が増えるような編集では問題は発生しませんが、文字数を減らすような編集を行ってから上書きするときに問題が起きる傾向があるようです。

使用環境は、
Windows 10 Pro 64bit 1809
秀丸パブリッシャー 4.23
です。

[ ]
RE:37239 -追伸-No.37241
秀丸担当 さん 19/03/18 09:51 [ コメントを投稿する ]
 
バグ情報ありがとうございます。
こちらで試してみたところうまく再現でできないというか、個人的にも普段からそれくらいのサイズのソースファイルを編集していたりします。何かしらの条件があると思うのですが、条件がわかると助かります。
ファイルの場所(ネットワークとか、ドキュメントフォルダとか、c:\に任意に作成したフォルダとか)も関係している可能性があると思います。

今考えられる推測の対策を書いてみます。

[その他]→[ファイルタイプ別の設定]→[その他]→[保存・読込み]で、「バックアップファイルの作成」をONにして、「高速バックアップ」もONにすると、既存のファイルの名前の変更(または別フォルダへ移動)してから、上書きのファイルを新規に作成するような動作になります。とりあえずはこれで回避できる可能性が高いと思います。
[その他]→[動作環境]で左下の上級者向け設定をONにして、
.bakが邪魔な場合、[その他]→[動作環境]→[保存]で保存先を指定しておくとそこに集約されるようになります。

保存先がネットワークの場合、SMBか何かのキャッシュの問題でエラーが出る場合、トラブル対策の設定で回避できる場合があります。
[その他]→[動作環境]→[トラブル対策]→[その他のトラブル対策]の「ファイルの書き込みでネットワークは一時ファイルからコピー」にすると、いったんローカルに保存してから、そのファイルをコピーして上書きするような動作になります。
事例としては症状は同じではないですが、書き込みのエラーが出るのを回避できるようです。

保存先がC:\Users\(ユーザー名)配下のフォルダだったり、全文検索(Windows Search / SearchIndexer)の対象フォルダの場合、ある条件でファイルを開いただけでSearchIndexerがすぐに上書きしてしまう問題があるようです。確認できているのはWindows 10の.emlファイルで、症状としてはタイムスタンプが変わるだけです。.vbsは標準では.txtファイルと同じはずなので、可能性としは低いと思います。
もしこういった動作が関係しているとしたら、Windows Searchのサービスを無効にしてみるか、対象フォルダではない別のフォルダで試してみると、条件を絞ることができると思います。

それ以外にも保存と同時に別のプログラムが書き込みアクセスしているとしたら、秀丸エディタの排他制御を設定すると効果があるかもしれません。
[その他]→[動作環境]→[排他制御1]の「ファイルの排他制御」で「上書きだけ禁止」または「読み書き禁止」にすると変化があるかもしれません。


[ ]
RE:37241 コメントNo.37242
fzok4234 さん 19/03/18 13:31 [ コメントを投稿する ]
  一応、問題のあるファイルは外付けSSD(exFATフォーマット)のI:ドライブのものです。あと言い忘れたことがあるのですが、このファイルには編集をしやすくするために行マークがたくさんついています。また、最初に「レジストリを消去した」と申したが、消去後にすぐ消去前と同じ環境設定を行っていました。

もしかしたらこの環境設定や行マークの使用が問題発生の条件になっているのかもしれません。さらに、問題のファイルを別名でコピーしても再発したことから、ファイルの構造も関係しているかもしれません。

そこで、問題が起きているこのファイル、および現在のレジストリの
HKEY_CURRENT_USER\Software\Hidemaruo
キーをエクスポートした.regファイルを御社にて検証してもらいたいので、送付したいのですがどうすればよいのでしょうか。

-ps-
このコメントは出先のPCから投稿したものです。本日20:00ごろ帰宅して問題の起きている自宅PCが使用可能になる予定です。


[ ]
RE:37242 コメントNo.37243
秀丸担当 さん 19/03/18 14:10 [ コメントを投稿する ]
 
情報を送っていただける場合、メールで"taki@maruo.co.jp"まで、添付ファイルで送っていただけると助かります。

ファイルの場所の情報もありがとうございます。
ネットワークでない外付けドライブということで、変化がある可能性がある設定がありました。
[その他]→[動作環境]→[トラブル対策]→[その他のトラブル対策]の、「ファイル書き込み時の排他制御」と、「ファイル書き込み時に既存ファイルをチェックしない」があります。
この2つのどちらかまたは両方ONで変化があるかもしれません。後者の「ファイル書き込み時に既存ファイルをチェックしない」は、バックアップの設定がOFFであっても、ファイルを新しく作るのと同じ効果があります。
[ ]
RE:37243 コメントNo.37246
fzok4234 さん 19/03/19 09:35 [ コメントを投稿する ]
  先ほど問題の起きるファイルをメールにて送信しました。
[ ]
RE:37246 コメントNo.37247
秀丸担当 さん 19/03/19 13:17 [ コメントを投稿する ]
 
ファイルを受け取りました。
ありがとうございます。

設定を反映させてフルパスで同じ場所にして試してみ所では再現できませんでした。
別のPCでローカルのドライブや外付けドライブを変えてみても同じでした。

高速バックアップの設定で回避できる可能性が高いと思っているのですが、排他制御、トラブル対策の各設定を1つずつ試してみて、どれで大丈夫でどれでだめかがわかると、条件を絞り込めて原因を探るヒントになるかもしれないです。
あと、いつから起き始めたかや、ウィルス対策ソフトもわかると何かわかるかもしれません。
[ ]
RE:37247 コメントNo.37248
fzok4234 さん 19/03/19 14:12 [ コメントを投稿する ]
  実は当方でも、PCを再起動すると問題はしばらく起こらなくなります。しかし、一旦症状が出始めると文字数を減らす操作の後の上書きで必ず問題が起きるようになってしまうなど、まさに神出鬼没の状態です。

メールでファイルを送ったころの時間帯では症状が出ていましたが、その後一旦PCをシャットダウンし先ほど再びPCを起動してファイルを開いて問題の操作を行いましたが、まだ症状が出ていません。

この問題が起こり始めたのは3月14日で、ウイルス対策ソフトはカスペルスキーセキュリティを使用しています。

再度症状が出始めたら、排他制御などの設定変更を試してみます。

[ ]
RE:37248 コメントNo.37249
秀丸担当 さん 19/03/19 17:10 [ コメントを投稿する ]
 
検索していたら、ウィルスバスターでSetEndOfFileのエラーコード1224のエラーが出る事例があるらしく、もしそれと同じことが起きているとしたら、そうなる可能性がありそうでした。
エラーコード1224で「ユーザーマップセクションで開いたファイルでは実行できません」というエラーです。
カスペルスキーとのことで、同じかどうかはわからないです。

試しにテスト用の別のプログラムのを作って、いわゆるユーザーマップセクションの方法でファイルを開きっぱなしにすると、同様の問題を再現させることができました。
メモ帳でも全く同じような症状で再現するようです。
高速バックアップONで回避できることもわかりましたが、バックアップファイルのコピー時に同エラーコードのエラーが出ます。
排他制御やトラブル対策では効果無かったです。
何らかの別のプログラムが開きっぱなしではなく、保存処理のその瞬間だけに開いているとしたら、排他制御やトラブル対策でも効果あるかもしれないですが、瞬間を再現するのは難しいので未確認です。

保存処理の瞬間だけだとしたら、エラーが出て再試行することで回避できるかもしれないので、V8.89のβ版で再試行メッセージを出すようにしてみようと思います。それで回避できるとしたら、自動的に再試行するようにして問題無くなるかもしれません。
瞬間ではなくずっと開きっぱなしだとしたら、高速バックアップの方法しかなさそうです。
[ ]
RE:37249 コメントNo.37252
秀丸担当 さん 19/03/20 09:28 [ コメントを投稿する ]
 
V8.89β1を公開して、再現できたケースのときにエラーメッセージを表示して、再試行できるようにしてみています。
正式までには、数回は自動で再試行して、それでもだめな場合にメッセージを出すようにしようと思います。

以下のページの下のほうの「先行開発バージョンはこちら」からダウンロードできます。
https://hide.maruo.co.jp/software/hidemaru.html
[ ]
RE:37249 コメントNo.37253
fzok4234 さん 19/03/20 14:04 [ コメントを投稿する ]
  先ほど再び症状が出始めたので高速バックアップを有効にしてみたところ、一旦症状は治まりました。当面これで様子を見ようと思います。

[ ]
RE:37253 コメントNo.37254
秀丸担当 さん 19/03/20 18:24 [ コメントを投稿する ]
 
高速バックアップで大丈夫で、バックアップの作成で1224のエラーコードも出ないとしたら、何らかの別プログラムが一瞬だけ開くタイミングがあるのかもしれないです。
(開きっぱなしだとしたら、該当ファイルそのものの保存は成功しますが、バックアップのほうが失敗するので)

そういうケースだとして、V8.89β1では、高速バックアップOFFでも再試行のダイアログが出て再試行で成功するようになると思います。
[ ]

[ 新規に投稿する ]