Skip to content

sessionhost(herdr 系): daemon instance の進行性劣化 — substrate_herdr の herdr socket 送信で Broken pipe が漸増(1.4/分→6.1/分)し、launchd job 手動再登録でのみ解消(根本原因未特定の調査) #571

Description

@proboscis

事象(実測 — ACP responsibility:sessionhost-steward の観測台帳から)

  • 対象 instance: com.masui.doeff-sessionhost-herdr、2026-07-27 16:0xZ 起動 〜 2026-07-28 11:27Z 停止。
  • errlog(~/Library/Logs/doeff-sessionhost-herdr.log)に Broken pipe 4,242 行。時間分布は進行性: 前半 ≈1.4/分 → 後半 ≈6.1/分(19 時間で漸増)。
  • 同窓に herdr_callTraceback 18 本
  • launchd job の手動再登録(bootout + bootstrap、runs 7→1)でのみ解消。 KeepAlive respawn では直っていない。以後の instance(07-28 11:27Z 起動)では再発なし。

エラー経路(コード)

doeff_agents/sessionhost/substrate_herdr.hy

  • herdr-call(.sendall sock line) — 接続は都度張る設計(connect → sendall → recv、finally close)
  • 呼び手: herdr-agent-pane-id-io(herdr-call "agent.get" {"target" session-name})← host.hy の substrate-present 経路
  • 上流 = herdr アプリ socket ~/.config/herdr/herdr.sock

追加観測(切り分け材料)

  • Broken pipe は turn RPC 活動量にほぼ比例する(steward v13 実測: BP/counters 増分比 = 1.20〜1.25 で安定)。時間あたり率だけで劣化を判定すると活動量で交絡する。劣化事案当時の counters はプロセス内累積で遡及不能のため、当時の活動量一定性は検証できていない。
  • socket 無応答(daemon.status probe が応答本文を返さない)も同 instance で 4 エピソード観測されたが、各 1 sensor 周期(≈5 分)で自己復旧。
  • 接続都度張りの設計なのに instance の再登録で直る(= instance 側に progressive な状態がある)のが不整合点。fd リーク / herdr 側の per-client 状態 / backlog あたりが仮説だが未検証。

調査の問い

  1. sendall の Broken pipe = 相手(herdr app)が接続を受けて即閉じる条件は何か(herdr 側の受理経路・backlog・rate limit)。
  2. instance 再登録で直る progressive 状態の正体(daemon プロセス側の fd / スレッド / キューの漏れ?)。
  3. 再現条件(turn RPC 活動量との比例を踏まえた負荷条件)。

備考

  • 検出面: 当時 ACP 側 sensor の正規表現欠陥(^Traceback 行頭アンカーが doeff Traceback 形式を 88% 取り落とし)で Traceback 18 本は不可視だった。ACP 側で修正済みのため、同型が再発すれば今度は 5 分粒度で検出され、即時級(サービス停止・DB 破損)は operator へ直通する(ACP ADR sensor-breach-severity 85bc0b)。
  • 起票元: ACP operator-queue responsibility:sessionhost-steward の operator 裁定 2026-07-29(相談席 decide-sessionhost-alert-policy が代行起票)。steward は read-only のため本 issue の実調査は doeff 側の担当が必要。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions