macSKK icon indicating copy to clipboard operation
macSKK copied to clipboard

「補完候補を検索する」が有効なときskkservのタイムアウトが連続して入力できなくなる

Open y-yu opened this issue 2 months ago • 2 comments

概要

下記の動画のようにskkservのタイムアウトが連続して入力ができなくなるという事象が3回ほど発生しました。

https://github.com/user-attachments/assets/fb383d5e-2780-479f-a503-de8a13d62c56

別のIMEに切り替えてkillall macSKKして再びmacSKKに戻すと、skkservのタイムアウトは生じなくなることから、skkservのサーバー側の問題ではないと考えています。

環境情報

  • macOS: 15.7.1
  • macSKK: 2.6.0
  • azoo-key-skkserv: 0.3.0

この組み合せでSKKServの 👇 補完候補を検索するをONしたところ発生しました。

  • Image

考察(?)

発生が偶発的であまり原因を特定しきれていませんが、少し気になったのは #407 でskkservへ「補完」の問い合せがはいったことで、それまであったSKKServClient.referとは別に新たにSKKServClient.completionで下記のSKKServClient.connectionに(connectメソッド経由で)アクセスするようになりました。

  • https://github.com/mtgto/macSKK/blob/75d4eacab252483048e64f7f0ccedd54fcf23c9d/SKKServClient/SKKServClient.swift#L13-L14

そして、SKKServServicerefer/completionの中でセマフォを試してタイムアウトした際にproxy.disconnect()経由でSKKServClient.connectionを初期化しています。

  • https://github.com/mtgto/macSKK/blob/75d4eacab252483048e64f7f0ccedd54fcf23c9d/macSKK/SKKServService.swift#L111-L113

もしSKKServService.refer/completionが別スレッドで呼ばれた場合、それぞれがdisconnect経由でSKKServClient.connect初期化するといった競合が発生するような気がしました。個人的にもCtrl + Iでのタブ入力と、スペースによる変換をガチャガチャやっているときに発生している印象があります 🤔

y-yu avatar Nov 15 '25 10:11 y-yu

@y-yu 報告ありがとうございます。

azoo-key-skkserv: 0.3.0 この組み合せでSKKServの 👇 補完候補を検索するをONしたところ発生しました。

azoo-key-skkserv v0.3.0リリース版にはまだ補完候補の検索が入っていません。 常に見つからないエラーを返します。

一応私は↓のPull Requestをビルドして使えることを軽くテストしてはいます。 https://github.com/gitusp/azoo-key-skkserv/pull/41

もしSKKServService.refer/completionが別スレッドで呼ばれた場合、それぞれがdisconnect経由でSKKServClient.connect初期化するといった競合が発生するような気がしました。個人的にもCtrl + Iでのタブ入力と、スペースによる変換をガチャガチャやっているときに発生している印象があります 🤔

コードをしっかり読まないといけないですが、可能性はありそうですね。

mtgto avatar Nov 15 '25 14:11 mtgto

azoo-key-skkserv v0.3.0リリース版にはまだ補完候補の検索が入っていません。 常に見つからないエラーを返します。

ありがとうございます!そういうことでしたか。 とりあえずazoo-key-skkservの次バージョンがリリースされるまでのあいだ、いったん補完候補の検索をオフにしておこうと思います 🙆‍♀️

y-yu avatar Nov 15 '25 14:11 y-yu