時々上書き保存時にファイルの末尾にゴミ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)の対象フォルダの場合、ある条件でファイルを開いただけでSearc
hIndexerがすぐに上書きしてしまう問題があるようです。確認できているのはWindow
s 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でも再試行のダイア
ログが出て再試行で成功するようになると思います。

[ ]