TOKUNAGA Hiroyuki
tkng****@xem*****
2005年 2月 25日 (金) 05:44:29 JST
On Fri, 25 Feb 2005 04:23:41 +0900 Hiroyuki Komatsu <komat****@taiya*****> wrote: > 小松です。 > > At Thu, 24 Feb 2005 18:38:01 +0900, > Hiroyuki Ikezoe wrote: > > > PRIME 0.9.4-beta2、uim-0.4.6 用のクライアント、prime-el-1.5.1.2 を > > > 公開しました。 > > > > 再現条件はよくわからないんですが、uim-primeを使っていると、 > > > > /usr/lib/ruby/1.8/prime/prime2.rb:49:in `send': undefined method > > `context_reset' for nil:NilClass (NoMethodError) from /usr/lib/ > > ruby/1.8/ prime/prime2.rb:49:in `session_command' from /usr/lib/ > > ruby/1.8/prime/ protocol.rb:442:in `context_reset' from /usr/lib/ > > ruby/1.8/prime/ protocol.rb:112:in `send' from /usr/lib/ruby/1.8/ > > prime/ protocol.rb:112:in `send_command' from /usr/lib/ruby/1.8/ > > prime/ protocol.rb:99:in `execute' from /usr/lib/ruby/1.8/prime/ > > server.rb:32:in `session_loop' from /usr/lib/ruby/1.8/prime/ > > server.rb:31:in `synchronize' from /usr/lib/ruby/1.8/prime/ > > server.rb:31:in `session_loop' from /usr/lib/ruby/1.8/prime/ > > server.rb:25:in `loop' from /usr/lib/ruby/1.8/prime/server.rb:25:in > > `session_loop' from /usr/lib/ruby/1.8/prime/server.rb:134:in `start' > > from /usr/bin/prime:152:in `main' > > from /usr/bin/prime:17 > > > > ってなエラーが出てアプリケーションが固まることがあります。 > > プロセスを見てると、PRIMEのプロセスが生成されては死ぬ、ということを > > 繰り返してるような感じです。 > > こちらでも確認しました。 > > 0. Unix ドメインソケットは使用しない (デフォルト)。 > 1. gedit を起動。 > 2. Ctrl-f で検索ウインドウを出す。 > 3. そのまま閉じる。 > 4. gedit で何かキーを押す。 > > で、固まります。 > > 確認したところ、原因は uim/prime.c 内での PRIME プロセスの PID 管理が > うまくいっていないようでした。 > > 結論としては、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 サーバに命令が全部飛んで > いたので、コネクションを二重に閉じようとしてエラーが起こっていた > ようです。 > > # どうもいままでは、アプリケーションにテキストエントリが > # 10個あった場合、PRIME も 10個立ち上がっていたようです。 > # でも使われているのは、そのうちのひとつでした。 (^^;;; prime_lib_initはアプリケーション毎に1回しか呼ばれないはずなので、パッ チ適用前でもPRIME のプロセス数はアプリケーションと同じ数のはずです。テキ ストウィジェット毎に生成してたんでは、さすがに重たすぎて動かないんじゃな いかと。 -- 徳永拓之 tkng****@xem***** http://kodou.net/