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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions