Skip to content

Flaky test_flight_animation_export_gif: intermittent bus error in VTK off-screen rendering #1078

Description

@thc1006

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions