Re: fcitx5-mozc

From: Hiroo Ono (小野寛生) <hiroo.ono+freebsd_at_gmail.com>
Date: Fri, 18 Jul 2025 05:04:25 UTC
小野寛生です。

やっと FreeBSD 上での日本語入力環境が復活しました。
情報をお寄せいただいた皆様ありがとうございました。

直接メールをいただいた中で、ある方から src/ipc/ipc_path_manager.cc で
プロセスIDから実行ファイルのパスを取得する部分が FreeBSD 的には間違っ
ているためうまく動かないことを教えていただきました。
/proc/PID/exe からパスを取得しようとしていて、Linux はこれで良いのですが、
FreeBSD の procfs では /proc/PID/file になるということです。
procfs をマウントしていない場合は libprocstat を使うので、そちらの方法で
パッチを修正して pull request を送ったところです。

対処としては、簡単な順に
・ linprocfs を /proc にマウントする
・ ipc_path_manager.cc の "/proc/%u/exe" の部分を "/proc/%u/file" に修正して
  procfs を /proc にマウントして使う
・ 私の pull request を出口さんがマージしてくれるのを待つ
という感じになるでしょうか。

以上。

2025年7月17日(木) 6:04 Hiroo Ono (小野寛生) <hiroo.ono+freebsd@gmail.com>:
>
> 小野寛生です。
>
> ありがとうございます。
>
> 2025年7月17日(木) 3:09 Tomoaki AOKI <junchoon@dec.sakura.ne.jp>:
> >
> > On Wed, 16 Jul 2025 21:58:13 +0900
> > Hiroo Ono (小野寛生) <hiroo.ono+freebsd@gmail.com> wrote:
> >
> > > 小野寛生です。
> > >
> > > 2024年11月24日(日) 20:38 Tomoaki AOKI <junchoon@dec.sakura.ne.jp>:
> > > > 出口さんのリポジトリですが、mozc関連・compiz関連及びavidemux関連分が
> > > > 前回ご紹介したところから分離・独立し、現在は
> > > >
> > > >  mozc    : https://github.com/kdeguchi/mozc-ports
> > > >  compiz  : https://github.com/kdeguchi/compiz-reloaded-ports
> > > >  avidemux: https://github.com/kdeguchi/avidemux-ports
> > > >
> > > > にて公開されています。 以前ご紹介したままのリポジトリでは使えなく
> > > > なっていますのでご注意下さい。
> > > >
> > > > また、mozcについてはビルド時のbazelの扱い方が刷新されて
> > > > poudriereで問題になっていたビルド段階でのファイル取得も
> > >
> > > これをありがたく使って ja-fcitx5-mozc を利用していたのですが、ここしばらく
> > > poudriere でビルドしたものをインストールすると fcitx5 と mozc_server の間の
> > > 通信がうまくいかないで mozc_server が abort します。
> > > stable/14 でも起きているので、出口さんが readme に書かれている current の
> > > 問題ではないと思います。
> > >
> > > 出口さんのリポジトリを overlay で使っている人で、こういう問題に当たって
> > > いる人はいませんか? さらには、そういう問題にあたったけど脱したという人
> > > はいませんか?
> > >
> > > エラーメッセージは長いですがこんな感じ。
> > > はじめの方の sem_open のエラーで検索して
> > > http://www.jp.netbsd.org/ja/JP/ml/tech-pkg-ja/201301/msg00003.html
> > > を見つけたのですが、それによれば mozc 関連のコードがなんかバージョン違い
> > > が混ざっている可能性が高いらしく、さて何が悪いんだろうと悩んでいます。
> > >
> > > input-method-unstable-v2 と text-input-unstable-v3 に対応させた hikari (Wayland
> > > compositor) を使っているというのも関係しているのかどうか。(自分でやった
> > > ところなので自信がない)
> > >
> > >
> > > WARNING: All log messages before absl::InitializeLog() is called are
> > > written to STDERR
> > > W0000 00:00:1752668408.961773  122069 user_dictionary.cc:298] Cannot
> > > get modification time of the user dictionary: NOT_FOUND: stat failed:
> > > /usr/home/hiroo/.config/mozc/user_dictionary.db: No such file or
> > > directory
> > > I0000 00:00:1752668408.961812  122069 user_dictionary.cc:561]
> > > MaybeStartReload() didn't start reloading
> > > E0000 00:00:1752668408.969765  127382 encrypted_string_storage.cc:72]
> > > cannot open user history file: NOT_FOUND: Failed to open
> > > /usr/home/hiroo/.config/mozc/.history.db with flags 0: No such file or
> > > directory
> > > E0000 00:00:1752668408.969837  127382 user_history_predictor.cc:224]
> > > Can't load user history data.
> > > E0000 00:00:1752668408.969847  127382 user_history_predictor.cc:372]
> > > UserHistoryStorage::Load() failed
> > > E0000 00:00:1752668408.972679  122069 config_handler.cc:264]
> > > user://config1.db is not found
> > > E0000 00:00:1752668408.977002  122069 named_event.cc:325]
> > > sem_open(/2fd8bd399374) failed: No such file or directory
> > > E0000 00:00:1752668408.977022  122069 named_event.cc:341]
> > > NamedEventNotifier is not available
> > > W0000 00:00:1752668408.977034  122069 session_server.cc:78] NamedEvent
> > > session is not found
> > > E0000 00:00:1752668415.170776  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668415.171933  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668415.171943  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668415.174694  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668415.174717  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668415.174725  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668435.914143  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668435.914187  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668435.914199  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668436.915171  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668436.915212  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668436.915225  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668437.931543  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668437.931605  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668437.931620  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668438.947855  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668438.947900  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668438.947915  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668439.964112  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668439.964165  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668439.964181  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668440.980468  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668440.980518  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668440.980535  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668441.996781  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668441.996828  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668441.996845  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668442.997796  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668442.997865  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668442.997899  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668444.003446  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668444.003508  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668444.003529  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668445.004848  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668445.004918  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668445.004938  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668446.011858  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668446.011893  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668446.011902  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668447.015225  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668447.015259  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668447.015267  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668448.027753  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668448.027794  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668448.027810  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668449.044047  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668449.044079  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668449.044088  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668450.060344  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668450.060388  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668450.060397  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668451.076636  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668451.076668  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668451.076677  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668452.127050  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668452.127090  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668452.127099  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668453.146596  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668453.146635  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668453.146651  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668454.158824  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668454.158858  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668454.158866  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668455.175128  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668455.175169  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668455.175181  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668588.973534  127383 ipc_path_manager.cc:402]
> > > readlink failed: No such file or directory
> > > E0000 00:00:1752668588.973579  127383 unix_ipc.cc:313] Connecting to
> > > invalid server
> > > E0000 00:00:1752668588.973588  127383 client.cc:674] Connection
> > > failure to session
> > > W0000 00:00:1752668588.973603  127383 session_watch_dog.cc:165]
> > > Cleanup failed execute PingCommand to check server is running
> > > E0000 00:00:1752668588.973605  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668588.973635  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668588.973643  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668589.973766  127383 ipc_path_manager.cc:402]
> > > readlink failed: No such file or directory
> > > E0000 00:00:1752668589.973797  127383 unix_ipc.cc:313] Connecting to
> > > invalid server
> > > E0000 00:00:1752668589.973812  127383 client.cc:595] Connection
> > > failure to session
> > > E0000 00:00:1752668589.973829  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > E0000 00:00:1752668589.973827  127383 session_watch_dog.cc:181] Ping
> > > command failed, waiting 1s, trial: 0
> > > W0000 00:00:1752668589.973853  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668589.973873  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668590.974000  127383 ipc_path_manager.cc:402]
> > > readlink failed: No such file or directory
> > > E0000 00:00:1752668590.974031  127383 unix_ipc.cc:313] Connecting to
> > > invalid server
> > > E0000 00:00:1752668590.974038  127383 client.cc:595] Connection
> > > failure to session
> > > E0000 00:00:1752668590.974052  127383 session_watch_dog.cc:181] Ping
> > > command failed, waiting 1s, trial: 1
> > > E0000 00:00:1752668590.974055  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668590.974086  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668590.974094  127384 unix_ipc.cc:485] response is empty
> > > E0000 00:00:1752668591.974202  127383 ipc_path_manager.cc:402]
> > > readlink failed: No such file or directory
> > > E0000 00:00:1752668591.974232  127383 unix_ipc.cc:313] Connecting to
> > > invalid server
> > > E0000 00:00:1752668591.974239  127383 client.cc:595] Connection
> > > failure to session
> > > E0000 00:00:1752668591.974253  127383 session_watch_dog.cc:181] Ping
> > > command failed, waiting 1s, trial: 2
> > > E0000 00:00:1752668591.974255  127384 message_lite.cc:205] Can't parse
> > > message of type "mozc.commands.Input" because it is missing required
> > > fields: type
> > > W0000 00:00:1752668591.974289  127384 session_server.cc:96] Invalid request
> > > W0000 00:00:1752668591.974296  127384 unix_ipc.cc:485] response is empty
> > > F0000 00:00:1752668592.074302  127383 session_watch_dog.cc:201]
> > > Cleanup commands failed. Rasing exception...
> > > *** Check failure stack trace: ***
> > >
> > > poudriere でのビルドは
> > > poudriere bulk -j s14amd64 -p main -O overlay_mozc japanese/fcitx5-mozc
> > > みたいにしてやっています。
> >
> > 青木@名古屋です。
> >
> > ここしばらく基盤的portsの更新でpoudriereが大規模なリビルドを始めたり
> > __FreeBSD_version が上がってpoudriereが全てのportsのリビルドに入ったり
> > x11/nvidia-driverとその関連portsにかまけていたりで時間が取れず追いかけ
> > られていなかったのですが、私のところでも発生しています。
> >
> > ただ、poudriereの日単位リビルド頻発でpoudriereを使用していないmain
> > ブランチの環境に切り替える時間が取れず非poudriereでのビルドは
> > 試していませんでした。
> >
> > 追いきれていないなりに、ハッシュ002f661の段階まで戻せば動作するのは
> > 確認できていますが、一部辞書データが同名で更新されていてミスマッチに
> > なってしまう対策でこのコミットと先頭のgit diffを取り、辞書関連だけに
> > 絞った形に手修正してから`git checkout 002f661`で正常に動作する
> > ところに戻してから辞書関連のパッチを当てることで逃げています。
> > ここ暫くはそれすらできていなかったのですが...。
>
> 002f661 とその次の commit の差分は、xucred から cr_pid を取るようにしたパッチと、
> -GH_TUPLE= fcitx:mozc:b091429
> +GH_TUPLE=fcitx:mozc:34c7bcf
>
> だけでしたので、 fcitx:mozc の上の2つの間の差分が問題なようです。
> とりあえず、今朝分かったのはそこまでです。
>
> >
> > ※最初に遭遇したのが8b9d96eから88df7a9に更新したときで、辞書以外の
> >  更新があるコミットをまたいで遡っていったところ、002f661で動作した
> >  ので、e6e7117以降でクラッシュするようになったというところまでは
> >  確認できているものの、動いてくれないと困るもののためそれ以上の
> >  追求が滞って出口さんへの連絡ができていません。
> >
> > mainブランチでのテストができていない状態なのでstable/14の各種段階、
> > x11/mateをベースに出口さんのリポジトリのcompizを併用(Magプラグイン
> > のため)している状況です。
> >
> > なお、さすがにpoudriereでのビルド途中にwww/chromiumのような巨大な
> > leafのリビルドが入ると洒落にならないのでそういうのを除外したインス
> > トール済みportsのリストを生成するスクリプトを作って使ってはいるものの、
> > それ自体に依存するportsが多数あるwebkit系やqt[5|6]-webengineやら
> > llvm系やらrustやらgcc系ばかりはどうしようもありません。
> >
> > リスト生成用スクリプトは下記で公開しています。
> >
> >  https://brew.bsd.cafe/TomAoki/sh_scripts/src/branch/main/poudlist-all
> >
> > --
> > 青木 知明  [Tomoaki AOKI]    <junchoon@dec.sakura.ne.jp>