What happens
tests/integration/test_plots.py::test_flight_animation_export_gif, and the other VTK/PyVista off-screen animation tests near it, sometimes crash the whole pytest process:
Fatal Python error: Bus error
File ".../tests/integration/test_plots.py", line 79 in test_flight_animation_export_gif
It is intermittent. The same commit and the same environment can pass one run and crash the next. When it does crash, the interpreter dies rather than a test failing cleanly, so the coverage upload is skipped and the whole matrix goes red.
Why it looks like a flake rather than a code regression
- It also hit develop's own Tests run on 2026-07-19 (https://github.com/RocketPy-Team/RocketPy/actions/runs/29697106388), at the same file and line.
- On a branch I was working on, a passing run and a crashing run installed the same rendering stack (vtk 9.6.2, pyvista 0.48.4, matplotlib 3.11.1, pillow 12.3.0), so it is not tied to a dependency bump.
- A bus error here is a native crash inside VTK's off-screen OpenGL, which tends to be a fragile spot on headless CI runners rather than something in the Python test logic.
Possible directions
- Retry only the animation tests, for example with
pytest-rerunfailures (@pytest.mark.flaky(reruns=2)), so an occasional OpenGL hiccup does not take down the whole matrix.
- Or run the rendering tests in their own step or subprocess, so a crash there does not end the rest of the suite.
- Or, if it can be pinned down, look at the off-screen GL setup on the runners (software rendering / mesa).
I ran into this while working on #1054, which is a seeding change that does not touch plotting. Happy to send a small PR marking the animation tests with a rerun if that is the approach you would prefer.
What happens
tests/integration/test_plots.py::test_flight_animation_export_gif, and the other VTK/PyVista off-screen animation tests near it, sometimes crash the whole pytest process:It is intermittent. The same commit and the same environment can pass one run and crash the next. When it does crash, the interpreter dies rather than a test failing cleanly, so the coverage upload is skipped and the whole matrix goes red.
Why it looks like a flake rather than a code regression
Possible directions
pytest-rerunfailures(@pytest.mark.flaky(reruns=2)), so an occasional OpenGL hiccup does not take down the whole matrix.I ran into this while working on #1054, which is a seeding change that does not touch plotting. Happy to send a small PR marking the animation tests with a rerun if that is the approach you would prefer.