Skip to content

ci: test_despawn.batsのbroad watcher非自己破壊テストがubuntu shardで実際にハングする(1回観測、診断情報あり) #362

Description

@kappaseijin

何が起きたか

PR #361のCI実行中、bats (ubuntu-latest shard 4)が約30分間応答せず、GitHub Actionsのタイムアウト機構によりCANCELLEDとなった。

run 34222141941, job 102047739874
最後に完了したテスト(11:49:11):
ok 184 despawn: times out (exit 3) when the member never drops

ハング中と判明したテスト(開始11:49、hang forensics実行時点12:14でも実行中):
tests/test_despawn.bats
test_despawn-3a_a_broad_-28non-2dactas-29_watcher_ignores_ctrl-3adespawn_and_does_not_self-2ddestruct
  (デコード: "despawn: a broad (non-actas) watcher ignores ctrl:despawn and does not self-destruct")

プロセスツリー(hang forensics、12:14:01時点)

137236 bash bats-exec-file ... tests/test_despawn.bats
  └ 142591 bash bats-exec-test ... (上記テスト、開始11:49)
      └ 143337 bash scripts/watch.sh sess-broad /tmp/agmsg-despawn-proj claude-code
          └ 148385 sleep 1

scripts/watch.shの子プロセスが、テスト開始から25分経過してもpoll loop(sleep 1)を回し続けたまま残存していた。これは「テストの意図(broad watcherがctrl:despawnを無視し自己破壊しない)」自体が実際に無限に成立し続け、テストのタイムアウト/クリーンアップが機能しなかった可能性が高い。

fdの共有関係(pipe-holders診断)から、bash(pid 3164〜143337)の一連が同じpipe(inode 12872/12873等)を共有しており、bats全体がこのプロセスチェーンの終了を待って停止していたと見られる。

差分との無関係性

PR #361の差分(git diff --stat origin/main..origin/design/issue-246-official-registration-query)はdocsファイルのみ(git diff --stat ... -- tests/ scripts/は0件)。tests/・scripts/への変更はなく、試験ファイルとは構造的に無関係。

既存記録との関係

despawn ignores broad watcher等のキーワードで検索したが、関連する既存Issueは見当たらなかった。Issue #341(launcher/despawn系の既知flaky群)とはプロセス管理という領域は共通するが、対象テスト・症状(実際にプロセスが終了しないまま25分残存)は異なる。

扱い

1回のみの観測のため着手しない(record-only)。ただし他のflakyと異なり「ok/not okが出ないまま無限に待つ」という重い症状であり、CI全体を30分以上占有した実害がある。rerunで対応する。次回同種の症状(test_despawn.batsのbroad watcherテストでのハング)が出たら診断への格上げを検討する。

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

    blocked:reproduction制御された再現が成立せず実装を保留中

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions