メール改変中にデッドロックで異常終了No.27063
ichiy さん 06/04/11 14:52
 
お世話になります。ichiy@ユーザ です。

maruo@mitene.or.jp宛てにdump.txtをお送りしましたが、
こちらの方にも情報を載せておきます。

複数(10通くらい)のメールを表示し、1つずつメール改変を行っていたところ、
画面が固まって、しばらくして落ちました。

メール改変には、
    #n = sendmessage(hidemaruhandle(0), 0x0111, 40083, 0);
のマクロを作成し、[Ctrl]+[8]に割り当ててました。

同じことをもう一度やってみましたが、再現しませんでした。

宜しくお願いします。
----
環境:WinXP SP2
      秀丸エディタ 6.00 beta13
      秀丸メール   4.64 beta10

[ ]
RE:27063 メール改変中にデッドロックで異No.27073
秀まるお2 さん 06/04/12 08:37
 
 送って頂いたdump.txtによると、たしかに秀丸メールで、スレッド間通信でデ
ッドロックしているようです。

 後で詳しく調査させていただきます。

[ ]
RE:27073 メール改変中にデッドロックで異No.27074
秀まるお2 さん 06/04/12 09:19
 
 調べてみたら、複数のメールを選択した状態でマクロ実行して現象が起きてい
るような気がします。秀丸メール本体ウィンドウ側が複数のメールをまとめて開
こうとして、その作業と並行してエディタウィンドウ上で改変保存が実行されて
デッドロックしているようです。

 こちらで試しに

    loaddll "tkinfo.dll";
    #n = dllfunc("OpenMail");
    message "A";

 のようなマクロを作って複数メールを選択して実行した限りでは、マクロと
「開く」の動作が並行するようなことにはなりませんでしたが、何か別の方法で
メールを開いているのでしょうか。その辺のマクロの内容も教えて欲しいです。

[ ]
RE:27074 メール改変中にデッドロックで異No.27075
ichiy さん 06/04/12 09:34
 
お世話になります。ichiy@ユーザ です。

>  のようなマクロを作って複数メールを選択して実行した限りでは、マクロと
>「開く」の動作が並行するようなことにはなりませんでしたが、何か別の方法で
>メールを開いているのでしょうか。その辺のマクロの内容も教えて欲しいです。

「開く」動作は、マクロは使用しておりません。
メール一覧上で複数メールを選択して、Enter押下です。

その後の動作がうろ覚えで申し訳ないのですが、
1つのメール上で改変マクロ(*)を実行して改変し、
次のメールを選択して、再度改変マクロを実行してて
固まったように思います。

    *:改変マクロ処理内容
    #n = sendmessage(hidemaruhandle(0), 0x0111, 40083, 0);

宜しくお願いします。

[ ]
RE:27075 メール改変中にデッドロックで異No.27076
ichiy さん 06/04/12 09:48
 
お世話になります。ichiy@ユーザ です。

>その後の動作がうろ覚えで申し訳ないのですが、
>1つのメール上で改変マクロ(*)を実行して改変し、
>次のメールを選択して、再度改変マクロを実行してて
>固まったように思います。
>
>    *:改変マクロ処理内容
>    #n = sendmessage(hidemaruhandle(0), 0x0111, 40083, 0);
>

推測ですが、もしかすると、
2つ目のメールで改変マクロを実行して、何やら固まったので
さらに次のメールで改変マクロを実行してしまったかも。

それが原因かもしれません。

上記のように、改変マクロはsendmessage()を使用していますので、
応答が返ってくるまでは、そのマクロが実行中となっているでしょうし。

ということで、sendmessage()ではなく、
Bypass_PostMessageを使用すれば起きない気もしています。

宜しくお願いします。

[ ]
RE:27076 メール改変中にデッドロックで異No.27077
秀まるお2 さん 06/04/12 10:18
 
 たしかに、エディタウィンドウ上での「改変保存」が2つ同時に実行されてる
ようですが、それ以前に、「メールを開く」の処理が止まってまして、それが根
本的な原因のような気がします。

 といいつつ、今のところ原因がよく分かりません。分からないなりに適当に直
してみようかなぁと思いますけど。

> ということで、sendmessage()ではなく、
> Bypass_PostMessageを使用すれば起きない気もしています。

 これはこれで、そっちを使っていただいた方が固まる可能性は低くなると思い
ます。ということで、とりあえずそういう風に直して欲しいです。

[ ]
RE:27077 メール改変中にデッドロックで異No.27081
秀まるお2 さん 06/04/12 14:06
 
 調べてみたら、やはりマクロ実行中であるってことが関係した処理の中で固ま
ってるようです。

 そこをうまく直せるかどうか微妙な所ですが、とりあえずは
Bypass_PostMessageを使うことで回避できるはずのようです。

[ ]
RE:27081 メール改変中にデッドロックで異No.27082
ichiy さん 06/04/12 14:11
 
お世話になります。ichiy@ユーザ です。

>  調べてみたら、やはりマクロ実行中であるってことが関係した処理の中で固ま
>ってるようです。
>
>  そこをうまく直せるかどうか微妙な所ですが、とりあえずは
>Bypass_PostMessageを使うことで回避できるはずのようです。

改変マクロは、Bypass_PostMessageを使用するよう変更します。

色々と調査して頂き、ありがとうございました。

[ ]