Forums: POPFile 全般 (Thread #6200)

複数のアカウントのメールを平行して受信すると POPFile が停止する (2004-10-18 20:36 by amatubu #11561)

バグセクションに登録していた情報ですが、だんだん原因がしぼれていましたので
このあたりでいったん報告します。

Windows 版で、複数のアカウントのメールを平行して受信すると POPFile が
停止する(異常終了)という問題が起こっています。
http://sourceforge.jp/tracker/index.php?func=detail&aid=5056&group_id=759&atid=2947

これまでしばらく症状の検証をしてきましたところ、
・言語設定が 'Nihongo' の場合にだけ問題が起こる
 ('English' の場合は問題ない)
・Classifier/MailParse.pm の Text::Kakasi 関連の部分をコメントアウト
 すると問題が起こらない
ということがわかりました。

ということで、原因は Text::Kakasi にありそうだというところまでは
わかったのですが、なんとかできるものなのかどうかがわかりません。
含まれていた Text::Kakasi のバージョンが 1.05 と古いようでしたので、
新しいバージョン(2.04)に変更して様子をみようと思っているところです。

同じような症状が起こっている方がいらっしゃいましたら情報提供を
お願いします。
(日本語環境でしか起こらない問題のため、本家では情報を得られません)

私の環境は、OS は Windows XP SP2、メールクライアントは pochy です。

RE: 複数のアカウントのメールを平行して受信すると POPFile が停止する (2004-10-19 12:57 by amatubu #11577)

バージョンを変更しても症状は変わりませんでした。
また、呼び方を変えてみたりしましたが、同じでした。

Text::Kakasi で問題が起こっていることは確かだと思いますが、
対処方法がわからずお手上げ状態です。
(日本語で使用するときは同時接続をしない、という消極的な
 対処方法しか思いつきません)

マルチスレッドで Text::Kakasi を使うことに問題があるのかも
しれないと考えているのですが・・・。
Reply to #11561

RE: 複数のアカウントのメールを平行して受信すると POPFile が停止する (2004-10-20 12:43 by amatubu #11601)

> マルチスレッドで Text::Kakasi を使うことに問題があるのかも
> しれないと考えているのですが・・・。

この部分について検証してみました。
fork() でいくつかのスレッド(ではなくて子プロセスが正確?)
を作成して、その中で Text::Kakasi を使うというものです。
その結果、同じようにエラーが出て止まってしまいました。

ということなので、おそらく、Text::Kakasi はスレッドセーフ
ではないのではないかと思います。
対策としては、Nihongo 環境では fork しないようにするか、
Text::Kakasi を使う前になんらかの方法でロックをかけて同時に
実行されないようにするくらいでしょうか。
(テストしたスクリプトで、thread モジュールを使って
 同時に実行されないようにロックしてみたところ、エラーなく
 動くことが確認できました)

現状はこのような感じです。
(テスト用のスクリプトは整理してバグセクションに登録する予定です)
なにかアイデアがありましたらお願いします。
Reply to #11577

RE: 複数のアカウントのメールを平行して受信すると POPFile が停止する (2004-10-21 12:40 by amatubu #11617)

検証用スクリプトですが、Mac OS X では問題なく動きました。
どうも Windows 版だけの問題のようです。

Text::Kakasi を使用するところで排他処理を行うようにした
パッチをバグセクションに登録しました。
https://sourceforge.jp/tracker/index.php?func=detail&aid=5056&group_id=759&atid=2947

私の環境では、これで問題なく動くようになりました。

排他処理についてはあまり詳しくないのでもっといい方法が
あるかもしれません。このあたりについて、他の方法があれば
よろしくお願いします。
Reply to #11601

RE: 複数のアカウントのメールを平行して受信すると POPFile が停止する (2004-10-22 23:03 by amatubu #11626)

flock は Windowx 9x では使えないなど不完全なようですので、
Thread::Semaphore を使って書き換えてみました。
http://sourceforge.jp/tracker/index.php?func=detail&aid=5056&group_id=759&atid=2947

threads、threads::share、Thread:Semaphore など、Windows 版の POPFile
には含まれていないモジュールが必要ですので、別途入手してください。

Windows XP SP2 で動作確認しています。
(Windows 環境以外では、パッチをあててもあてなくても動作は変わりません)
Reply to #11617

RE: 複数のアカウントのメールを平行して受信すると POPFile が停止する (2004-11-25 00:12 by amatubu #11954)

v0.22.2 に含まれる予定のようです。
https://sourceforge.net/forum/forum.php?thread_id=1183806&forum_id=230652
Reply to #11626

0.22.2 で修正されます(複数のアカウントのメールを平行して受信すると停止 (2004-12-01 01:31 by amatubu #12013)

本家に投稿したパッチがコミットされました。
次のバージョン(0.22.0)で修正されます。
Reply to #11954

0.22.2 RC0 に反映されました(複数のアカウントのメールを平行して受信すると停止 (2004-12-01 18:48 by amatubu #12022)

本家フォーラムにて、0.22.2 RC0 が公開されました。
http://sourceforge.net/forum/forum.php?thread_id=1187664&forum_id=230652

まだ少し問題があるようですが(というか私が投稿したパッチ自体にも問題があったようです)、
複数のアカウントのメールを同時に受信すると POPFile が終了してしまうという症状が
発生している方はお試しください。
Reply to #12013

0.22.2 で修正されました (2004-12-18 08:16 by amatubu #12238)

この問題については、0.22.2 で修正されました。
Reply to #12022

RE: 0.22.2 で修正されました (2005-01-13 18:22 by jubako #12515)

修正されたとのことなので、1週間使っていますが、
やはり10回に1回ぐらい強制終了がかかることがありますね…
以前のように無反応になるわけではなく、
エラー発生のアラートが表示されますが。

スレッド数4でも2でも大して変わらず。
一応タイムアウト時間を増やして様子見、
経過は追ってご報告します。

-------------------------
WindowsXP Pro SP2
Windows版 POPFile v0.22.2
EdMax 3.05
Norton SystemWorks 2003
Reply to #12238

RE: 0.22.2 で修正されました (2005-01-15 06:30 by amatubu #12521)

ありがとうございます。

私のところで起こっていた問題と同じなのか、それともまた違う問題なのかが
気になるところです。
なにかわかりましたらレポートをよろしくお願いします。

エラーが起こっているのはやはりなにかの DLL でしょうか?
Reply to #12515

RE: 0.22.2 で修正されました (2005-01-19 21:34 by jubako #12561)

システムトレイのアイコンに触れると強制終了になりますね。
(近付けるだけでなってる気もしますが…)
タイムアウトの設定は関係なかったようです。

エラー内容は…
popfileib.exe
問題が発生したため、popfileib.exeを終了します。

報告するか否かのお馴染みのダイアログです。
Reply to #12521

RE: 0.22.2 で修正されました (2005-01-19 22:37 by amatubu #12562)

ご報告ありがとうございます。
タスクトレイのアイコンで生じる問題については、0.22.0 のリリースノート
http://sourceforge.net/project/shownotes.php?release_id=266477
に書かれている、

> 1. THE TRAYICON ON WINDOWS CAN CAUSE POPFILE TO FREEZE. With certain setups
> if you attempt to view the trayicon's tooltip or hover your cursor over it
> while checking or downloading mail POPFile may freeze. The exact cause is
> still unknown but it may be related to some video drivers. If this problem
> affects you turn off the trayicon. A solution is being looked into.

の問題だと思います。これについては、現在のところ、トレイアイコンを
オフにする以外の解決策が見つかっていません。
申し訳ありませんが、解決までの間は、タスクトレイアイコンを使わず、
ブラウザのお気に入りなどから UI にアクセスするようにしていただければと
思います。
Reply to #12561

RE: 0.22.2 で修正されました (2005-01-19 23:35 by jubako #12565)

なるほど、0.22.2で修正された問題とは
また別の問題なわけですね…

普段はメールのヘッダ情報からUIを開くので、
意図的にアイコンに触れることは無いのですが、
何かの拍子に、ということもありますから、
表示しないように設定しました。

御丁寧に有難うございました。
Reply to #12562

RE: 0.22.2 で修正されました (2005-01-22 12:24 by amatubu #12586)

そうですね。
0.22.2 で修正されたのは、複数のアカウントのメールを同時に受信した場合に
起こる問題だけです。

タスクトレイアイコンの問題については未解決ですので、問題が起こる場合は
アイコンの表示をオフにしてください。よろしくお願いします。
Reply to #12565

RE: 複数のアカウントのメールを平行して受信すると POPFile が停止する (2005-01-24 08:17 by jubako #12616)

タスクトレイアイコンをOFFにしてても、
やっぱり同様のエラーが出ることがあるようです(^^;;
今のところ再現方法も見つからないのですが…。

30分間隔で定期受信して1日に1回あるかないか
と、あまり頻度は高くありません。
Reply to #11561

RE: 複数のアカウントのメールを平行して受信すると POPFile が停止する (2005-01-24 19:23 by amatubu #12626)

どの DLL でエラーが発生しているのかがわかればなにか手がかりが
つかめるかもしれませんが、Dr Watson のログにはなにか
残っていないでしょうか。

アプリケーション自体が異常終了するということになると、
Perl スクリプトの集合体である POPFile としては、いかんとも
しがたいところではあります。
(私が作った Mutex のコードに穴があるという可能性も否定
 できませんが)

perl popfile.pl で起動させた場合には、perl.exe が異常終了
しますか?
Reply to #12616