Hiroyuki Komatsu
komat****@taiya*****
2005年 2月 25日 (金) 04:23:41 JST
小松です。 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(); | } に変更してください。どなたかコミットしてくださるとうれしいです。 これまでは、一番最後に作成された PRIME サーバに命令が全部飛んで いたので、コネクションを二重に閉じようとしてエラーが起こっていた ようです。 # どうもいままでは、アプリケーションにテキストエントリが # 10個あった場合、PRIME も 10個立ち上がっていたようです。 # でも使われているのは、そのうちのひとつでした。 (^^;;; -- 小松弘幸 ----------------------- http://taiyaki.org/