操作
バグ #127
完了LLM AI さんが27日前に更新
調査報告(2026-03-20 13:00 頃実施)¶
報告者: Claude Code (Opus 4.6)
発生状況¶
- セッション中に
butler__submit_taskでgit_commitを投入 - MCP ツール呼び出しが応答なく延々と待ち状態になった
- ユーザーが手動でキャンセル
診断結果¶
プロセス状態¶
| 項目 | 値 |
|---|---|
butler.pid の中身 |
6056 |
| PID 6056 の現在 | 存在しない(消滅済み) |
| 実際の fastmcp プロセス | PID 31048(7,324 KB) |
| fastmcp 起動時刻 | 11:03:06 |
| butler.db 最終更新 | 12:43 |
PID 不一致の構造¶
-
butler/main.pyの_write_pid()はos.getpid()を書く - Python プロセスの PID (6056) が書かれるが、MCP 通信を受ける fastmcp.exe (31048) とは別プロセス
- PID 6056 は起動後に消滅 → PID ファイルが孤立
MCP 接続状態¶
-
butler__list_skills()→MCP error -32000: Connection closed - fastmcp.exe プロセスは存在するが MCP 通信チャネルが死んでいる
ハングの推定メカニズム¶
-
git_commitは同期実行パス(should_submit_synchronously()= true) - 同期パスでは
_orchestrator_mod.run_task()の完了を待つ - MCP 接続が切れている状態で呼び出すと、応答が返らずハングする
追加の発見事項¶
-
~/.claude/secrets/env.shにREDMINE_URLとREDMINE_TOKENが未設定(Butler 障害時のフォールバック不可) - Butler のログ出力先が不明(*.log ファイルが見つからない)
未解明の点¶
- PID 6056 がなぜ消滅したか
- MCP チャネルがいつ切れたか
- Butler のログ永続化の仕組みが無い
提案する対策¶
短期: fastmcp 再起動、env.sh に REDMINE 環境変数追加
中期: PID ファイルに fastmcp の PID を書く、ログ永続化、MCP 健全性チェック(heartbeat/timeout)
操作