概要
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.bats・tests/test_team_work_reconciler.batsは、.github/scripts/shard-tests.sh 4 4の出力に含まれていない(ハングが起きているshard 4には無い)。
- PR #87で変更した
scripts/team-work.shのうち触れたのはobserve|queue|audit・reconcile|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.txt(RUNNER_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.batsのsync start系テストを繰り返し実行し、再現を試みる。
- 原因が特定できるまでの緩和策として、該当jobのタイムアウトを短縮してCI全体の待ち時間を減らす、または既知のハングに対する自動リトライをワークフロー側に組み込む、などを検討する。
まだ具体的な修正の範囲は決めていません。追跡・情報集約のために起票します。
概要
tests/test_remote_status_liveness.batsの「sync start ...」テスト群が、macOS runner上でごく稀に完全にハングし、CIワークフロー自身が持つhang検知機構(後述)によって強制cancelされる現象が、日付・ブランチをまたいで複数回観測されています。まだ原因を特定できていないため、追跡用に起票します。観測事実
fix/herdr-window-default-issue57-ac3bats (macos-latest 2/4)fix/85-team-work-store-init(PR #87)bats (macos-latest 4/4)PR #87での3回のハング詳細(job logより):
ok 247 sync start reaps a ready-timeout child before releasing ownership(03:36:22Z) を最後に出力が止まり、##[error]The operation was canceled.(03:53:01Z) まで約17分間無音。ok 382 sync start: two at once leave exactly one engine, on the blind probe (#817, #652)(04:19:48Z) を最後に出力が止まり、04:21:18Zにcancel。いずれも直前に出ていた最後のテストは
test_remote_status_liveness.bats内のsync start系だが、ハングした具体的なテスト名は毎回異なる(#247と#382)。特定の1テストに固定された再現ではなく、この一帯(プロセスspawn/readiness pollingまわり)で断続的に起きている様子。PR #87の変更との関連は無いと判断した根拠
tests/test_team_work_audit.bats・tests/test_team_work_reconciler.batsは、.github/scripts/shard-tests.sh 4 4の出力に含まれていない(ハングが起きているshard 4には無い)。scripts/team-work.shのうち触れたのはobserve|queue|audit・reconcile|watchdog分岐のみ。shard 4に含まれるtest_team_work_state.batsはteam-work.shのcatch-all(claim/renew/ack等)分岐しか使わず、そちらは元々agmsg_storage_ensure_initializedを呼んでおり今回の差分と無関係。以上から、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.txt(RUNNER_TEMP配下)に定期的なプロセス診断スナップショットを記録し、ジョブ終了時にartifactとしてアップロード(hang-samples-${{ matrix.os }}-${{ matrix.shard }})。ただし本Issueを起票する前に検索した範囲では、この現象を追跡する既存のGitHub Issueは見つかりませんでした("hang"・"macos.*timeout"等でissue一覧を検索、0件)。ツールは用意されていたが、issueとしては追跡されていなかったようです。
次のステップ(未着手)
hang-samples-macos-latest-4(run 32211975474の該当attempt)のartifactを取得し、スタックサンプルから具体的にどのプロセス/syscallでブロックしているかを特定する。test_remote_status_liveness.batsのsync start系テストを繰り返し実行し、再現を試みる。まだ具体的な修正の範囲は決めていません。追跡・情報集約のために起票します。