Title: [Bug]: Random timeout failures in CI · Issue #30851 · matplotlib/matplotlib · GitHub
Open Graph Title: [Bug]: Random timeout failures in CI · Issue #30851 · matplotlib/matplotlib
X Title: [Bug]: Random timeout failures in CI · Issue #30851 · matplotlib/matplotlib
Description: 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 h...
Open Graph Description: 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 i...
X Description: 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 i...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/30851
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Bug]: Random timeout failures in CI","articleBody":"### Bug summary\n\nWe have been struggling with flaky timeout behavior for some time. See https://github.com/matplotlib/matplotlib/issues/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 https://github.com/matplotlib/matplotlib/pull/29981 and/or dig deeper.\n\nFailures look like\n```\n\u003e raise TimeoutExpired(self.args, orig_timeout)\nE 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\n```\n\n\n### Code for reproduction\n\n```Python\n-\n```\n\n\nFor a start, let's track in which pipelines and for which tests the timeout can be observed:\n\n- Pytest Windows_py311 - test_lazy_auto_backend_selection [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46205\u0026view=logs\u0026j=f92c32cd-721a-536e-3a87-a0c010db3f7f\u0026t=d4eecd58-7131-52e4-f793-e9e3ca32dedb)\n- Pytest Windows_py313 - test_interactive_backend[toolbar2-MPLBACKEND=tkagg-BACKEND_DEPS=tkinter] [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46205\u0026view=logs\u0026j=0e51c8a9-4119-5244-b946-ee585b1b50f1\u0026t=e90dd38b-859f-5d2f-90bb-85e3d7473c7a)\n- Pytest Windows_py313 - test_fontcache_thread_safe [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46205\u0026view=logs\u0026j=0e51c8a9-4119-5244-b946-ee585b1b50f1\u0026t=e90dd38b-859f-5d2f-90bb-85e3d7473c7a)\n- Pytest Windows_py313 - test_fallback_to_different_backend [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46186\u0026j=0e51c8a9-4119-5244-b946-ee585b1b50f1\u0026t=e90dd38b-859f-5d2f-90bb-85e3d7473c7a)\n- Pytest Windows_py313 - test_blitting_events[MPLBACKEND=tkagg-BACKEND_DEPS=tkinter] [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46186\u0026j=0e51c8a9-4119-5244-b946-ee585b1b50f1\u0026t=e90dd38b-859f-5d2f-90bb-85e3d7473c7a)\n- Pytest Windows_py313 test_blit [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46184\u0026view=logs\u0026j=0e51c8a9-4119-5244-b946-ee585b1b50f1\u0026t=e90dd38b-859f-5d2f-90bb-85e3d7473c7a)\n- Pytest Windows_py313 test_fallback_to_different_backend [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46184\u0026view=logs\u0026j=0e51c8a9-4119-5244-b946-ee585b1b50f1\u0026t=e90dd38b-859f-5d2f-90bb-85e3d7473c7a)\n- Pytest Windows_py313 test_backend_getattr[matplotlib.backends.backend_agg] [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46184\u0026view=logs\u0026j=0e51c8a9-4119-5244-b946-ee585b1b50f1\u0026t=e90dd38b-859f-5d2f-90bb-85e3d7473c7a)\n- Pytest Windows_py312 test_interactive_thread_safety[MPLBACKEND=tkagg-BACKEND_DEPS=tkinter] [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46183\u0026view=logs\u0026j=f92c32cd-721a-536e-3a87-a0c010db3f7f\u0026t=d4eecd58-7131-52e4-f793-e9e3ca32dedb)\n- Pytest Windows_py313 test_interactive_timers[MPLBACKEND=tkagg-BACKEND_DEPS=tkinter] [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46171\u0026view=logs\u0026j=0e51c8a9-4119-5244-b946-ee585b1b50f1\u0026t=e90dd38b-859f-5d2f-90bb-85e3d7473c7aj)\n- Pytest Windows_py312 test_fontcache_thread_safe [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46169\u0026view=logs\u0026j=f92c32cd-721a-536e-3a87-a0c010db3f7f\u0026t=d4eecd58-7131-52e4-f793-e9e3ca32dedb)\n- Pytest Windows_py313 test_blit [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46169\u0026view=logs\u0026j=0e51c8a9-4119-5244-b946-ee585b1b50f1\u0026t=e90dd38b-859f-5d2f-90bb-85e3d7473c7a)\n- Pytest Windows_py312 test_qt_missing [ref](https://dev.azure.com/matplotlib/matplotlib/_build/results?buildId=46135\u0026view=logs\u0026j=f92c32cd-721a-536e-3a87-a0c010db3f7f\u0026t=d4eecd58-7131-52e4-f793-e9e3ca32dedb)\n\n### Observations\n- seems only to occur on windows, but with all python versions (3.11-3.13)\n- if it fails it's typically one test, but up to 4 timed out tests have been observed in a single pytest run\n- the Majority of PRs have at least one timeout\n- it happens in different tests every time but the common part is that they create subprocesses ","author":{"url":"https://github.com/timhoffm","@type":"Person","name":"timhoffm"},"datePublished":"2025-12-13T09:31:53.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":38},"url":"https://github.com/30851/matplotlib/issues/30851"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:0b6c6354-dae7-dee6-e3a3-cf5b9a6e8dbb |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E3E6:349CCC:E461D6:1372129:6A51FC78 |
| html-safe-nonce | 0dc52f5bddb5e5318ab907477fb271deb8749d5a5ea1fd83d2e32733cdb82dfc |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFM0U2OjM0OUNDQzpFNDYxRDY6MTM3MjEyOTo2QTUxRkM3OCIsInZpc2l0b3JfaWQiOiI4MzIwNjU2OTgwNTk2MzU4MjY0IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | bd425c4455f715ac82764f33947f0b7473f11fbf0117b7d57eaa886159e0e41a |
| hovercard-subject-tag | issue:3725741643 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/matplotlib/matplotlib/30851/issue_layout |
| twitter:image | https://opengraph.githubassets.com/e9df4d121f72cc2efaddef22419fb2557ae417651cf322964f7f9fd3a34a06ed/matplotlib/matplotlib/issues/30851 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/e9df4d121f72cc2efaddef22419fb2557ae417651cf322964f7f9fd3a34a06ed/matplotlib/matplotlib/issues/30851 |
| og:image:alt | 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 i... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | timhoffm |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git |
| octolytics-dimension-user_id | 215947 |
| octolytics-dimension-user_login | matplotlib |
| octolytics-dimension-repository_id | 1385122 |
| octolytics-dimension-repository_nwo | matplotlib/matplotlib |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1385122 |
| octolytics-dimension-repository_network_root_nwo | matplotlib/matplotlib |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7aed05249554b889eb33d002851a973eebcc7e91 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width