Repository navigation
fix(runner): accept earlyoom's SIGKILL in the memory-hog subtest - #7005
Conversation
earlyoom sends SIGKILL instead of SIGTERM when its poll first lands below the 5% kill threshold, so the subtest's SIGTERM grep failed whenever the hog filled memory faster than earlyoom polled. Assert that earlyoom killed the hog with either signal, and print full build logs from the flake check so a failing VM subtest names itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 19 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 8a7245a
No actionable bugs found in the changed areas. Accepting either earlyoom signal while matching the hog's store path is a focused fix: it removes the timing-dependent signal assumption without relaxing the victim check, deadline, or SSH recovery check. The build-log flag and corresponding dispatcher expectations stay aligned; no extra abstraction is needed.
Verification: static review of the diff and surrounding VM test, hog workload, launcher, and dispatcher tests only. I did not run the Python suite or Nix VM test, or independently reproduce the SIGKILL case.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
checks.x86_64-linux.github-runner-vmfailed in two merge groups for moq-dev/moq#6934 (40609795466, 40619259411). The full log fromnix logon the runner host names the failing subtest:Root cause. The guest did what the subtest is for: earlyoom killed the hog after 4s, with 0 MiB re-read from disk. The test then required the word
SIGTERM. earlyoom sends SIGTERM only when a poll lands between 10% and 5% available, and SIGKILL when it first lands below 5%. On the runner host the hog filled 700 MiB in 4s and crossed that 37 MiB band between two polls; locally it took about 8s and earlyoom saw 9.7%, so it sent SIGTERM. Which signal is sent depends on the hog's fill rate against earlyoom's poll interval. It is not a property of the runner, so the runner host's state (store GC, KVM, memory) does not matter beyond letting the check rebuild. The result rebuilt because the host's weeklynix-gcon 2026-10-26 collected it, and a failed build is not cached, so the second run rebuilt and failed the same way.Fix.
hog.py's store path. That is stricter about the target than before (any SIGTERM matched) and accepts either of earlyoom's two kill paths. The 60s no-thrash deadline and the sshd check are unchanged.just ci/just checkrunnix flake check --print-build-logs, so the next failing VM subtest prints in full instead of the last 25 lines of QEMU cleanup. Logs grow only when a check actually rebuilds, which is when they are needed.Checks. The VM test passes locally (all 10 subtests, 183s; earlyoom sent SIGTERM there). The new pattern matches the runner's SIGKILL line from the failing log.
just checkpasses exceptcheck flake, which skips locally because this Nix builder cannot create user namespaces. That is why I built the VM test directly.sh/dispatch-query.test.pyis updated for the new flag.Public API: none. Wire: none.
Finishes and removes
quest/m0/test-flakes-2/runner-vm.md(added by moq-dev/moq#6998).Choices made without asking: accepting either signal rather than forcing SIGTERM (which signal earlyoom sends is not a guarantee the runner needs), and
--print-build-logsover parsingnix logfrom the error output (simpler; the extra output appears only when a check rebuilds).(Written by Claude Opus 5.5)
🤖 Generated with Claude Code