Skip to content

[Bug]: Random timeout failures in CI #30851

@timhoffm

Description

@timhoffm

Bug summary

We have been struggling with flaky timeout behavior for some time. See #29797. At some point we thought, we had fixed it though updating the runner, but it sometimes happens again. So it's not eventually solved. Possibly we have to revive #29981 and/or dig deeper.

Failures look like

>               raise TimeoutExpired(self.args, orig_timeout)
E               subprocess.TimeoutExpired: Command '['C:\\hostedtoolcache\\windows\\Python\\3.12.10\\x64\\python.exe', '-c', "import importlib.util;_spec = importlib.util.spec_from_file_location('matplotlib.tests.test_backends_interactive', 'D:\\\\a\\\\1\\\\s\\\\lib\\\\matplotlib\\\\tests\\\\test_backends_interactive.py');_module = importlib.util.module_from_spec(_spec);_spec.loader.exec_module(_module);_module._impl_test_lazy_auto_backend_selection()"]' timed out after 20 seconds

Code for reproduction

-

For a start, let's track in which pipelines and for which tests the timeout can be observed:

  • Pytest Windows_py311 - test_lazy_auto_backend_selection ref
  • Pytest Windows_py313 - test_interactive_backend[toolbar2-MPLBACKEND=tkagg-BACKEND_DEPS=tkinter] ref
  • Pytest Windows_py313 - test_fontcache_thread_safe ref
  • Pytest Windows_py313 - test_fallback_to_different_backend ref
  • Pytest Windows_py313 - test_blitting_events[MPLBACKEND=tkagg-BACKEND_DEPS=tkinter] ref
  • Pytest Windows_py313 test_blit ref
  • Pytest Windows_py313 test_fallback_to_different_backend ref
  • Pytest Windows_py313 test_backend_getattr[matplotlib.backends.backend_agg] ref
  • Pytest Windows_py312 test_interactive_thread_safety[MPLBACKEND=tkagg-BACKEND_DEPS=tkinter] ref
  • Pytest Windows_py313 test_interactive_timers[MPLBACKEND=tkagg-BACKEND_DEPS=tkinter] ref
  • Pytest Windows_py312 test_fontcache_thread_safe ref
  • Pytest Windows_py313 test_blit ref
  • Pytest Windows_py312 test_qt_missing ref

Observations

  • seems only to occur on windows, but with all python versions (3.11-3.13)
  • if it fails it's typically one test, but up to 4 timed out tests have been observed in a single pytest run
  • the Majority of PRs have at least one timeout
  • it happens in different tests every time but the common part is that they create subprocesses

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