CI: force software rendering to fix flaky VTK off-screen bus error (#1078) - #1084
CI: force software rendering to fix flaky VTK off-screen bus error (#1078)#1084wuisabel-gif wants to merge 2 commits into
Conversation
|
Could a maintainer approve the workflow run on this PR when you get a chance? Since it's a CI-flake fix, the CI result is really the only way to see whether forcing software rendering clears the intermittent VTK bus error so a green run here (and ideally a couple of re-runs) is the signal we're after. No library code is touched, only the two test-workflow env blocks. Thanks! |
Approved the run! I believe the error persists, do you have any guesses on why? |
Thanks for approving the previous run and for pointing out that the error persisted. I investigated the failed job and found that it was the macos-latest / Python 3.14 matrix leg. The integration-test process The original Mesa settings did not affect this failure because LIBGL_ALWAYS_SOFTWARE and GALLIUM_DRIVER=llvmpipe control Mesa’s Linux-style OpenGL stack. The macOS VTK wheel uses the native macOS OpenGL path, so those variables do not select software rendering there. I pushed follow-up commit 15968a8, which:
GitHub has created new Tests and Linters workflow runs for the commit, but both are currently waiting for maintainer approval
|
Pull request type
Checklist
yaml.safe_load)CHANGELOG.md— n/a per the changelog's own "should not be here: github maintenance"Current behavior
tests/integration/test_plots.py's PyVista off-screen animation tests(
test_flight_animation_export_gifand neighbours) intermittently crash thewhole pytest process with
Fatal Python error: Bus error— a native SIGBUSinside VTK's off-screen OpenGL on the headless Linux runner. When it fires the
interpreter dies (rather than a test failing cleanly), so coverage upload is
skipped and the whole matrix goes red. It also hits
developdirectly. This is #1078.New behavior
Forces Mesa software rendering on the test jobs by setting
LIBGL_ALWAYS_SOFTWARE=1andGALLIUM_DRIVER=llvmpipe. Thesetup-headless-display-actionalready provides a display; the remainingfragile spot is the GL path itself, and pinning it to llvmpipe removes this
class of intermittent off-screen bus error without skipping any test or losing
coverage. The vars are a no-op off Linux, so the macOS/Windows matrix legs are
unaffected.
Why not the alternatives (from the issue)
pytest-rerunfailuresalone can't help — a SIGBUS kills the interpreter,so there's nothing left to rerun.
pytest-forkedwould isolate the crash but needsos.fork, and thematrix includes
windows-latest.Software rendering targets the root cause instead. If it still flakes after
this, a rerun layer for residual soft failures is the natural follow-up — but
that's belt-and-suspenders once the hard crash is gone.
Breaking change
Additional information
Being a CI flake, this can't be proven fixed from a single run — but forcing
llvmpipe is the standard, low-risk mitigation for VTK off-screen bus errors on
GitHub headless runners, and it changes nothing about the library or the tests.
Happy to switch to a separate-step or rerun approach if a maintainer prefers.
Closes #1078