Skip to content

macos-latest runnerでtest_remote_status_liveness.batsのsync startテスト群が断続的にハングする #88

Description

@kappaseijin4claude

概要

tests/test_remote_status_liveness.batsの「sync start ...」テスト群が、macOS runner上でごく稀に完全にハングし、CIワークフロー自身が持つhang検知機構(後述)によって強制cancelされる現象が、日付・ブランチをまたいで複数回観測されています。まだ原因を特定できていないため、追跡用に起票します。

観測事実

日時 ブランチ run job 状況
2026-08-17T10:11:22Z fix/herdr-window-default-issue57-ac3 32018951716 bats (macos-latest 2/4) cancelled
2026-08-19 03:23〜 fix/85-team-work-store-init(PR #87 32211975474 bats (macos-latest 4/4) 同一runで3回連続cancelled(guarded single-job rerunを3回試行、いずれもハング)

PR #87での3回のハング詳細(job logより):

  • 1回目: ok 247 sync start reaps a ready-timeout child before releasing ownership (03:36:22Z) を最後に出力が止まり、##[error]The operation was canceled. (03:53:01Z) まで約17分間無音
  • 2回目: ok 382 sync start: two at once leave exactly one engine, on the blind probe (#817, #652) (04:19:48Z) を最後に出力が止まり、04:21:18Zにcancel。
  • 3回目: 同じjobを再度rerunしたが、再度cancelled(詳細ログ未取得)。

いずれも直前に出ていた最後のテストはtest_remote_status_liveness.bats内のsync start系だが、ハングした具体的なテスト名は毎回異なる(#247と#382)。特定の1テストに固定された再現ではなく、この一帯(プロセスspawn/readiness pollingまわり)で断続的に起きている様子。

PR #87の変更との関連は無いと判断した根拠

  • PR #87で実際に変更したtests/test_team_work_audit.batstests/test_team_work_reconciler.batsは、.github/scripts/shard-tests.sh 4 4の出力に含まれていない(ハングが起きているshard 4には無い)。
  • PR #87で変更したscripts/team-work.shのうち触れたのはobserve|queue|auditreconcile|watchdog分岐のみ。shard 4に含まれるtest_team_work_state.batsはteam-work.shのcatch-all(claim/renew/ack等)分岐しか使わず、そちらは元々agmsg_storage_ensure_initializedを呼んでおり今回の差分と無関係。
  • 2026-08-17の別ブランチ(PR #87とは無関係、shard番号も2/4で別)でも同じ症状が確認されている。
  • githubstatus.com は本日確認時点でAll Systems Operational。GitHub側の広域障害ではなさそう。

以上から、PR #87の差分が原因ではなく、既存のsync startテスト群がmacOS runner上で持つ既知の潜在的なハングと判断し、PR #87側はguarded single-job rerunで進めています。

既にある手掛かり

.github/workflows/tests.ymlには、この種の症状("a shard that reports every test ok and then sits")を見越したhang検知・診断の仕組みが既にあります:

  • hang-samples.txtRUNNER_TEMP配下)に定期的なプロセス診断スナップショットを記録し、ジョブ終了時にartifactとしてアップロード(hang-samples-${{ matrix.os }}-${{ matrix.shard }})。
  • ワークフロー内のコメントに「the 08-01 hang」という記述があり、過去に少なくとも1回、同種の事象が診断された形跡がある。

ただし本Issueを起票する前に検索した範囲では、この現象を追跡する既存のGitHub Issueは見つかりませんでした("hang"・"macos.*timeout"等でissue一覧を検索、0件)。ツールは用意されていたが、issueとしては追跡されていなかったようです。

次のステップ(未着手)

  • PR #87がマージされ次第、hang-samples-macos-latest-4(run 32211975474の該当attempt)のartifactを取得し、スタックサンプルから具体的にどのプロセス/syscallでブロックしているかを特定する。
  • 再現性が高いようなら、ローカルのmacOS環境でtest_remote_status_liveness.batssync start系テストを繰り返し実行し、再現を試みる。
  • 原因が特定できるまでの緩和策として、該当jobのタイムアウトを短縮してCI全体の待ち時間を減らす、または既知のハングに対する自動リトライをワークフロー側に組み込む、などを検討する。

まだ具体的な修正の範囲は決めていません。追跡・情報集約のために起票します。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    root:R5待ちを観測条件+deadlineでなく時点値・回数・sleepで行う

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions