大量のメールの一括振り分けにて「保護違No.04045
なかしま さん 18/10/05 18:50
 
以下の環境で利用しています。

OS:Windows10 Pro 1803 64bit
秀丸メール:Version 6.86 32bit
メールサーバー:Office365
 →IMAP4で利用しており、「IMAP4的にフォルダやメールを同期させるモード」で利
用しています。

■行ったこと
・「受信」フォルダの直下に、約6万件のメールがあったのですが、
 これを配下にある20〜30個くらいのサブフォルダに振り分けをしようとして、
 「受信」フォルダを選択した状態で、「送受信」>「一括振り分け」>
 「現在フォルダのすべてのメールを振り分ける」を選択し、「振り分け!」を実行
しました。

・時間がかかりそうであったため、そのまま9時間ほど、放置したところ、
 特に異常はなさそうで、振り分処理も完了したように見えました。
 →実際に「受信」フォルダ内のメール数は、約3千件くらいまで減っていました。

■事象
・その後、改めて、「すべて送受信」を実行しましたところ、約6万件の処理が開始
され、
 画面の右下の「詳細>>」をクリックして、確認しますと、以下のように処理が
 随時実行されているように見える状況でした。
---
受信 - XXXX@XXXX
xxx / 62568 済み (XXXX K
---
  I 振り分け結果をサーバーに反映: 移動先=INBOX/XXX/XXXX/XXXX
I 保存済: UIDL=121661 folder=XXX\XXX\XXXX\XXXX
I 1674 / 62568 済み (59319Kバイト)
R * 3890 FETCH (BODY[] {4332}
R ... UID 121662) (4332バイト)
  I 振り分け結果をサーバーに反映: 移動先=INBOX/XXX/XXX/XXX/XXX
I 保存済: UIDL=121662 folder=XXXX\XXXXX\XXXXX\XXXX
I 1675 / 62568 済み (59323Kバイト)
R * 3891 FETCH (BODY[] {4363}
R ... UID 121663) (4363バイト)
---

・開始から10分くらいは、高速に処理がされるのですが、だんだんと、処理が遅くな
り、
 しばらくすると、10分に100件ほどしか処理件数が進まないような状況になり、
 また、最終的には、3〜4時間経ったところで(処理状況は、約6万件中1万2千件ほ
ど進んだところで)、
 以下のエラーメッセージが出て、秀丸メールが落ちてしまいました。
 ---
 エラー
 
 秀丸メールのプロセスで保護違反が発生しました。秀丸メールは異常終了します。
 秀丸メールの異常終了についての詳細情報は、dump.txtファイルに出力されていま
す。
 ---

・何度か実行してみましたが、状況は変わりません。

・「dump.txt」の中身を見れば、原因と改善策は分かりますでしょうか?

お忙しいところ、恐縮ですが、よろしくお願いします。

[ ]
RE:04045 大量のメールの一括振り分けにてNo.04047
秀まるお2 さん 18/10/07 22:58
 
 お手数かけてすみません。とりあえずdump.txtの中にあるエラーの記録を送ってい
ただければ、どこで保護違反が起きてるのかは特定できるので、それで直せる可能性
が高いです。

 dump.txtの中にある、

********** 14/01/30 13:20:49.938 6.87  Exception ....
eax=FFFFFFFF .....
HmCreate = .....
Stack Dump
...
...
...
FramePtr ReturnAd Param#1  Param#2 ....
...
...
...

 のような記録以降の内容(1つの記録につきおおよそ100〜400行程度の内
容)を送って欲しいです。よく分からない場合はdump.txtそのまま送ってもらっても
大丈夫です。

 再現テストは・・・・、さすがに6万通ものIMAPの振り分けはやったことが無いの
ですが、一応、テスト環境を作ってテストは可能だと思うので、せめて1万通くらい
までメールを増やしてなんとかテストしようと思います。

 テストするのにちょっと時間かかりそうですが。

[ ]
RE:04047 大量のメールの一括振り分けにてNo.04049
秀まるお2 さん 18/10/07 23:43
 
 あと、振り分けに時間がかかったのは、たぶんIMAP同期用のデータを更新するのが
極端に遅いせいだと思います。たぶんメール通数の二乗とかに比例して遅くなるよう
な処理になってしまってるんだと思います。

 その辺も改良したいと思います。

[ ]
RE:04049 大量のメールの一括振り分けにてNo.04050
秀まるお2 さん 18/10/08 09:27
 
 コメント1つ忘れてました。

 dump.txtを送っていただくとたら、送り先は"maruo@mitene.or.jp"でお願いします。

[ ]
RE:04050 大量のメールの一括振り分けにてNo.04051
なかしま さん 18/10/08 12:19
 
「dump.txt」をご指定のメールアドレスに送付しましたので、お手数ですが、ご確認
のほど、よろしくお願いします。

また、実はその後、色々と試行錯誤をしまして、現在は、以下のような状況になって
しまっています。

・「すべて送受信」を実行すると、お伝えしました通り、異常終了してしまう状況で
したが、
 各サブフォルダ内のファイルがどんどん増えていってしまう状態でした。
 →おそらく、同じメールが「すべて送受信」を実行するたびに、振り分けられ、コ
ピーされる
  状態になっているように見えました。

・そこで、いくつかのサブフォルダで重複メールを削除しました。
 →サブフォルダを右クリック>「重複メールのチェック」>設定はそのままで、
「開始!」をクリック>
  重複メールが見つかるので、「1つだけ残すの一括処理」を実行しました。

・その後、何度か、「すべて送受信」を実行すると、対象件数は約1万2千件まで減っ
たのですが、
 最後まで「すべて送受信」が成功することはありませんでした。

・その後、全てのサブフォルダの重複メールを削除しました。
 →「受信」フォルダを右クリック>「重複メールのチェック - 配下のフォルダも」>
  設定はそのままで、「開始!」をクリック> 重複メールが見つかるので、「1
つだけ残すの一括処理」を実行しました。
  →この処理は正常に完了しました。

・その後、振り分けられたメールは、全て未読扱いになっていたようなので、これが
悪いのかと思い、
 全てのメールを一括で既読にしたところ、エラーが発生しました。
 →「受信」フォルダを右クリック>「すべて既読にする - 配下のフォルダも含め
て」を実行
  →この時のエラーメッセージは、メモしていません。

  →この操作で、画面上は、全てのメールが既読になりました。

・その後、「すべて送受信」を実行すると、以下のエラーが発生し、現状、何も操作
ができない状況になっているのですが、
 何か、改善策はありますでしょうか?何度やっても、こうなってしまいます。
---

I 未読/既読切り替え(8015/8291)
R C29 BAD The specified message set is invalid.
I 未読/既読切り替えでエラーが返りましたが、無視します

I 未読/既読切り替え(8016/8291)
R C34 BAD Command Argument Error. 11
I 未読/既読切り替えでエラーが返りましたが、無視します

I 未読/既読切り替え(8025/8291)
R C46 BAD Command Argument Error. 11
* BYE Connection closed. 14
I 未読/既読切り替えでエラーが返りましたが、無視します
I メール一覧を取得中(15/91)
S C47 SELECT "INBOX/XXX/XX"
E ホストとの対話が切断されました。
I ログインに失敗したので再試行します (1回目)
---

[ ]
RE:04051 大量のメールの一括振り分けにてNo.04053
秀まるお2 さん 18/10/08 23:55
 
 送っていただいたdump.txtによると、メモリ不足のエラーが発生して落ちてるよう
でした。

 Windowsの32bitアプリケーションソフトは、32bitであるがためにアドレス空間に
制限がありまして、たとえパソコンに何十ギガものメモリを積んでいても、実際に使
えるのは2ギガバイトよりももっと少ない(たぶん1.5ギガくらい)のメモリしか
使えないです。今回そのアドレス空間の制限によってメモリが確保出来なくなってエ
ラーになってるようでした。

 なぜそうなるのかは、察しの通り、メール通数が多いのも一因かと思いますが、果
たして限界が何通なのかもいまいちよく分からずだし、いわゆるメモリリークのバグ
があって起きてるのかもしれません。ちょっとそこまでは分かりませんでした。

 とりあえず回避策としては、秀丸メールの64bit版に入れ替えていただく作戦があ
るかと思います。64bit版にはアドレス空間的な制限は無いので、パソコンに搭載し
てるメモリいっぱい近くが1つのアプリケーションソフトから使えるはずになります。

 あと・・・

 もしも、「アカウント毎の設定 - メールサーバー - POP3/IMAP4」の中にある

  □ メールの移動/コピーもサーバー上に反映させる

 がOFFの場合はONにするといいかもしれません。

 64bit版に入れ替えてもなお同じエラーで落ちてしまうか、またはとんでもなく遅
くて実用にならないって場合は、何か秀丸メールの方に別のバグがあるのかなぁと思
います。

[ ]
RE:04053 大量のメールの一括振り分けにてNo.04054
秀まるお2 さん 18/10/09 08:53
 
 もう1つ追加ですみません。

■大量振り分けで遅い原因

 IMAPで大量のメールを振り分けると遅い原因も一応分かったと思います。そこを改
良してみます。

 振り分けで遅くなるのを、現バージョンのままでとりあえず回避させるとしたら、
ある程度振り分けを実行したら、一回受信コマンドを実行して振り分け結果をサー
バーに反映するのがいいです。そうすればまた元の速度に戻ります。

■移動するはずがコピーされる原因

 移動するはずのメールがコピーされて、それを何度も繰り返してしまう理由です
が・・・移動の処理は、実は「コピーしてから元のメールを削除する」って処理をす
るんですが、元メールの削除をする前に何らかのエラーでサーバーとの通信が切れて
しまうと、削除だけ実行されなくなってしまいます。結果メールがコピーされるのみ
になってしまいます。

 とりあえずコピーされて増えてしまったメールは、手作業か「重複メールのチェッ
ク」で削除してもらうしか無いですが、大量の同期を溜め込む前に、「受信」コマン
ドを実行して同期を先に実行すれば、また先に進めると思います。

■同期のキャンセル

 サーバー上のメールの移動/コピー/削除の指示は、秀丸メールのデータ用フォルダ
配下のアカウント用フォルダの、「uidl_del.bin」ってファイルに記録されてます。
それを削除するか、または中身を秀丸エディタなどで開いて行単位で削除すると、そ
の辺の同期の処理を省略することも出来ます。

■メモリ不足などのエラーの回避策その2

 どうしても受信が完了しないようでしたら、今現在のメールデータとは別の場所に
メールデータ用のフォルダを用意して、「全般的な設定 - 基本」の「ホームディレ
クトリ」にてそこを指定してから改めてIMAP受信用のアカウントを作成して、そこで
受信してみるのがお勧めです。そうするとメモリ不足が回避できる可能性があると思
います。

[ ]
RE:04054 大量のメールの一括振り分けにてNo.04056
秀まるお2 さん 18/10/09 10:09
 
 っとコメントした所ですみませんが、受信中の自動振り分けで大量のメールが振り
分けられるとメモリ不足が発生するのは、調べてみたらバグがありました。必要な分
よりも余計にメモリを消費してて、それのせいでメモリ不足が起きるようでした。

 とりあえず、受信時の自動振り分けOFFにしていただければ、メモリ不足にはなら
ないと思うので、それで一回受信を完了させていただくのがお勧めかなぁと思います。
「アカウント毎の設定 - メールの振り分け」の「受信時に自動振り分けする」をOFF
にすればとりあえず大丈夫じゃないかと思います。

[ ]
RE:04056 大量のメールの一括振り分けにてNo.04057
なかしま さん 18/10/09 12:27
 
ご連絡ありがとうございます。

・「uidl_del.bin」を削除して、「すべて送受信」を実行したところ、
 「未読/既読切り替えでエラーが返りましたが、無視します」のエラーはなくなり
ましたが、
 再度、約1万2千件の同期処理が開始されましたので、これは、一時中止しました。

・その後、64bit版をインストールし、「すべて送受信」を実行したところ、無事、
最後まで
 処理を完了することができました!

これで、取り急ぎ、メールの送受信、同期は正常にできるようになりました。

ご対応、ありがとうございました。

[ ]
RE:04057 大量のメールの一括振り分けにてNo.04058
秀まるお2 さん 18/10/09 13:30
 
>  再度、約1万2千件の同期処理が開始されましたので、これは、一時中止しました。

 すみません。uidl_del.binと、もう1つuidl_del2.binファイルがもしあればそれ
も削除しないとダメでした。

 メモリを大量消費するバグは直せたのですが、IMAPでの大量振り分けが遅い方は直
すのがちょっと大変で時間がかかりそうです。それも直せたらβ版(V6.87β11)と
してアップロードさせていただきます。

[ ]
RE:04058 大量のメールの一括振り分けにてNo.04060
秀まるお2 さん 18/10/11 09:02
 
 IMAPでの大量のメールの振り分けが遅い対策をしてテストをしてみたんですが、と
りあえずこちらで2万通のメールでテストした限りは再現しないようでした。

 受信フォルダに2万通のメールを置いて、うち1万3千通が振り分けられるような
テストをしたんですが、おおよそ1分20秒くらいで完了するようでした。IMAP用の
処理(uidl_del.binファイルを更新する処理)が遅いかと思ったんですが、そんなで
もなさそうでした。

 6万通の場合に途中から極端に遅くなったのは、たぶんメモリ不足が起きてるせい
で「スワップ」という、メモリ不足を補う用のWindowsの仕組みが働いたせいじゃな
いかと思います。

 メモリ不足が起きるバグ修正だけで大丈夫だと思うので、とりあえずそれで1回β
版としてアップロードさせていただきます。(今日中に)

[ ]
RE:04060 大量のメールの一括振り分けにてNo.04061
なかしま さん 18/10/11 09:56
 
ご連絡ありがとうございます。

> 6万通の場合に途中から極端に遅くなったのは、たぶんメモリ不足が起きてるせ
>いで「スワップ」という、メモリ不足を補う用のWindowsの仕組みが働いたせいじゃ
>ないかと思います。

事象の発生したPCは、Windows10 64bitでメモリは16GBありますので、OS上のメモリ
が不足して、スワップするということはないと思うのですが、いかがでしょうか?


> メモリ不足が起きるバグ修正だけで大丈夫だと思うので、とりあえずそれで1回
>β版としてアップロードさせていただきます。(今日中に)

既に、ご案内いただいた手順と、64bit版の秀丸メールにしたことで、改善しており、
また、業務利用しているメールアドレスであるため、事象を再現させ、β版で改善し
ていることを確認することは、難しい状況ですので、ご了承ください。

[ ]
RE:04061 大量のメールの一括振り分けにてNo.04062
秀まるお2 さん 18/10/11 10:12
 
 たしかに16ギガもあったらスワップすることは無いですね。

 振り分けがずっと繰り返されるとuidl_del.binファイルを何度も書き換えて保存す
る処理が働きまして、メモリ不足の状況だとそのディスクキャッシュも効かず時間が
かかるかと思ったんですが、それも無さそうで・・・。

 実は手元のバージョンでuidl_del.binファイルの書き換えを高速化するように1回
やってみたんですが、まったく高速にならないというか、2万通程度では差が出ませ
んでした。しかもこの高速化の処理がかなり修正量が多くて、余計なバグを出すリス
クがありまして・・・、没にしました。

 現状で安定動作してるなら、とりあえず余計なβ版はインストールしていただかな
い方がいいです。

 もうちょっと時間をかけてテストしてみます。


[ ]