[prime-dev: 662] Re: PRIME 0.9.4-beta2, uim-prime for 0.4.6, prime-el-1.5.1.2

Back to archive index

TOKUNAGA Hiroyuki tkng****@xem*****
2005年 2月 25日 (金) 06:08:00 JST


On Fri, 25 Feb 2005 05:56:20 +0900
Hiroyuki Komatsu <komat****@taiya*****> wrote:

> At Fri, 25 Feb 2005 05:44:29 +0900,
> TOKUNAGA Hiroyuki wrote:
> > > 結論としては、uim/prime.c:prime_lib_init(uim_lisp use_udp_) の下の
> > > 方を、
> > > 
> > > |     } else {
> > > -       prime_pid = uim_ipc_open_command( prime_pid, &primer,
> > > &primew, prime_command );
> > > |       if(prime_pid == 0) {
> > > |         return uim_scm_f();
> > > |       }
> > > |       return uim_scm_t();
> > > |     }
> > > 
> > > から、
> > > 
> > > |     } else {
> > > +       if (prime_pid == 0) {
> > > +         prime_pid =
> > > +           uim_ipc_open_command( prime_pid, &primer, &primew,
> > > prime_command ); +       }
> > > |       if(prime_pid == 0) {
> > > |         return uim_scm_f();
> > > |       }
> > > |       return uim_scm_t();
> > > |     }
> > >   
> > > に変更してください。どなたかコミットしてくださるとうれしいです。
> > 
> >  ありがとうございます。r719でコミットしました。
> > 
> > # 実はなんでこれでバグが直るのか理解できてませんけど…。
> 
> prime_lib_init が複数回呼ばれるのを前提とします。
> 
> すでに prime_pid に PID:12345 が代入されている状態で、もういちど
> prime_lib_init が呼ばれると、prime_pid の値が PID:67890 に上書き
> されてしまいます。 uim クライアントは、PID:12345 に対してコマンドを
> 送信する必要もあるのですが、PID:67890 に上書きされているため、
> PID:12345 が管理しているセッションへのリクエストも PID:67890 に
> 送信してしまうからです。
> 
> 
> > > これまでは、一番最後に作成された PRIME サーバに命令が全部飛んで
> > > いたので、コネクションを二重に閉じようとしてエラーが起こっていた
> > > ようです。
> > > 
> > > # どうもいままでは、アプリケーションにテキストエントリが
> > > # 10個あった場合、PRIME も 10個立ち上がっていたようです。
> > > # でも使われているのは、そのうちのひとつでした。 (^^;;;
> > 
> >  prime_lib_initはアプリケーション毎に1回しか呼ばれないはずなので、
> > パッチ適用前でもPRIME のプロセス数はアプリケーションと同じ数のはずで
> > す。テキストウィジェット毎に生成してたんでは、さすがに重たすぎて動か
> > ないんじゃないかと。
> 
>    0. Unix ドメインソケットは使用しない (デフォルト)。
>    1. gedit を起動。
>    2. Ctrl-f で検索ウインドウを出す。
> 
> でプロセスが 3つ立ち上がりますよ。

 すいません、なんか寝ぼけたこと書いてました。prime-init-handlerはコンテ
キスト生成に使われる関数なんで、コンテキスト生成毎に呼ばれて当たり前です
ね。

# よく今までのコードで動いてたなぁと逆にびっくりしました。

-- 
徳永拓之
tkng****@xem*****
http://kodou.net/



Prime-dev メーリングリストの案内
Back to archive index