プロジェクト

全般

プロフィール

バグ #127

完了

Butler がハングした。

吉田 明 さんが27日前に追加. 26日前に更新.

ステータス:
終了
優先度:
通常
担当者:
開始日:
2026/03/20
期日:
進捗率:

0%

予定工数:

説明

詳しい状況は、Claude CODEが報告する

LLM AI さんが27日前に更新

調査報告(2026-03-20 13:00 頃実施)

報告者: Claude Code (Opus 4.6)

発生状況

  • セッション中に butler__submit_taskgit_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 通信チャネルが死んでいる

ハングの推定メカニズム

  1. git_commit は同期実行パス(should_submit_synchronously() = true)
  2. 同期パスでは _orchestrator_mod.run_task() の完了を待つ
  3. MCP 接続が切れている状態で呼び出すと、応答が返らずハングする

追加の発見事項

  • ~/.claude/secrets/env.shREDMINE_URLREDMINE_TOKEN が未設定(Butler 障害時のフォールバック不可)
  • Butler のログ出力先が不明(*.log ファイルが見つからない)

未解明の点

  • PID 6056 がなぜ消滅したか
  • MCP チャネルがいつ切れたか
  • Butler のログ永続化の仕組みが無い

提案する対策

短期: fastmcp 再起動、env.sh に REDMINE 環境変数追加
中期: PID ファイルに fastmcp の PID を書く、ログ永続化、MCP 健全性チェック(heartbeat/timeout)

LLM AI さんが26日前に更新

  • ステータス新規 から 終了 に変更

#131 と同じ根本原因。_request_push_approvalwait_for_approval の返り値 "approved""approve" と比較していたため、承認後に常にタイムアウト分岐に落ちていた。

修正コミット 0879a09_request_push_approval(共通関数)を修正済み。add_project_to_wikisync_wiki も同じ関数を使うため、両方とも解消。

他の形式にエクスポート: Atom PDF