Repository navigation
CI: bisect a red main build to the pull request that broke it #4345
LeandroLP23
started this conversation in
Ideas
Replies: 1 comment
|
One limit of this proposal, found with #4435: it only catches what CI can see. Since #4152, 47 AGC tests have crashed on AMD's Windows driver (Radeon 860M). Upstream CI runs the GPU tests on lavapipe, though, so So for GPU code the gap is hardware coverage rather than Windows coverage. Two cheap ways to narrow it, without new runners:
Periodic runs on real GPUs would cover more, but they need self-hosted runners. I'm happy to be the AMD RDNA 3.5 / Windows entry on such a list. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Proposal: when a
mainbuild turns red, a workflow bisects the merges since the last green build on the failing job and names the pull request that broke it. It costs nothing whilemainis green and doesn't change how pull requests are built.Why
Since 0ab2a04, full builds run on pull requests only when started by hand, and on
mainafter merges. During merge waves mostmainbuilds never run. Between 2026-10-11 19:00 UTC and 2026-10-12 06:40 UTC, 241 pull requests were merged. Of the 200mainbuild runs in that window, 176 were cancelled as superseded, 12 passed and 10 failed. A red run therefore covers dozens of merges, and finding the cause took a manual bisection each time. Three Windows regressions went in that night:HostPollundeclared inSocket.cpp)agc_write_trackingon Windowsguest_kernel_stack_protecton WindowsNone of the three was careless. Each pull request was tested by its author: on Linux, where the Windows path doesn't run, or with a focused test that didn't include the one that broke. While the Windows build was broken, every Windows run (fork CI, local checks of other pull requests) failed for a reason unrelated to the change being checked. Several people bisected the same failures in parallel.
What it would do
mainrun, take the first-parent merges between the last successful run and the failing commit.A bisection over 64 merges takes about 6 steps. With ccache, each step is an incremental build plus a few tests. This runs only when
mainis red, not per pull request.Smaller option
If even that is too much, a label alone would help. A pull request whose diff touches
#ifdef _WIN32code or Windows-only files, and whose description declares no Windows run, gets awindows-untestedlabel. People with Windows machines can then check those before merging.I can implement either one as a pull request, if the approach is acceptable. Feedback on the cost and runner limits is welcome before I start.
All reactions