[sylpheed-jp:10970] Re: [Q] Actionの引数 %f(ファイル名) %F(ファイルリスト)の挙動の違いについて

Hiroyuki Yamamoto hiro-y @ kcn.ne.jp
2010年 6月 9日 (水) 17:13:41 JST


山本です。

On Wed, 9 Jun 2010 14:49:11 +0900
Hiroyuki Yamamoto <hiro-y @ kcn.ne.jp> wrote:

> On Wed, 9 Jun 2010 10:07:57 +0900
> "OOSATO, Kazzrou" <kazz @ kk.iij4u.or.jp> wrote:
> 
> > 大里です。
> > 
> > 最初のメールで書いた「fetch できない→落ちる」という関係は逆のような
> > 気がしてきました。
> > gdb 上で実行すると、ときどき成功することも多いのです。
> > 直接実行するとだいたいコケます。
> > ということは、タイミングの問題があって、gdb のオーバーヘッドで救われ
> > てる? fetch そのものじゃなくて fork の方の問題かなぁ
> > 
> > kazz @ mercury:~$ cat bin/ACTION
> > #! /bin/bash
> > sleep ${1}
> > head -3 ${2}
> > cat ${2} > /dev/null
> > exit  0
> > 
> > こういうスクリプトを書いて
> > ACTION 1 %f
> > だと、成功しますが、
> > ACTION 0 %f
> > では fetch 対象となるメールが少し多いと落ちます。
> 
> ざっとソースをチェックしたところ、 gdk_input_add で入出力を捕捉すると
> ころで、本来であればスレッドのロックを確保しないといけないところで確保
> していないところがありました。このため、タイミングによって落ちたり落ち
> なかったりするのではないかと思われます。とりあえず対策してみます。

直接的な原因は、タイミングによっては、ダイアログが作成される前に
子プロセスからデータを受け取る場合があり、その際に開放処理
(free_children) が複数回呼び出されてしまい、そこでクラッシュしているよう
でした。

とりあえずスレッドのロック周りも含めて svn trunk で対策してみましたの
で、試していただけますか。

# 現在のコード自体がかなり怪しい構造になっているので、そのうちごっそり
# 書き直したいところです^^;

-- 
Hiroyuki Yamamoto <hiro-y @ kcn.ne.jp>


Sylpheed-jp メーリングリストの案内