From 0f17e0b9ba0ed56995ff57d9572c1e7d15e172e6 Mon Sep 17 00:00:00 2001 From: Pablo Galindo Date: Mon, 25 May 2026 15:40:15 +0100 Subject: [PATCH] gh-150387: Fix hang in test_run_failed_script_live on slow buildbots The test relied on the failing script (``1/0``) crashing fast enough that fewer than ``MIN_SAMPLES_FOR_TUI`` (200) samples were collected, which would trigger the early-return path in ``sample.sample_live`` and bypass the TUI input loop. On slow buildbots (ASan, TraceRefs, NoGIL) the interpreter takes long enough to bootstrap and reach the ``1/0`` that the profiler easily collects >=200 samples, pushing execution into the ``while collector.running:`` loop. Because the mock only queued a final ``q`` keystroke when ``n_times >= 500`` (and the failed-script test used ``n_times=200``), nothing ever set ``running`` to ``False`` and the test hung until the regrtest timeout. Always queue the final ``q`` so the live TUI loop exits regardless of how many samples were collected. --- .../test_sampling_profiler/test_live_collector_ui.py | 3 +-- .../Tests/2026-05-25-15-39-53.gh-issue-150387.yzZ7jq.rst | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Tests/2026-05-25-15-39-53.gh-issue-150387.yzZ7jq.rst diff --git a/Lib/test/test_profiling/test_sampling_profiler/test_live_collector_ui.py b/Lib/test/test_profiling/test_sampling_profiler/test_live_collector_ui.py index c0d39f487c8cbdf..59373a8d00c03cf 100644 --- a/Lib/test/test_profiling/test_sampling_profiler/test_live_collector_ui.py +++ b/Lib/test/test_profiling/test_sampling_profiler/test_live_collector_ui.py @@ -835,8 +835,7 @@ def mock_init_curses_side_effect(self, n_times, mock_self, stdscr): # still failing for _ in range(n_times): mock_self.display.simulate_input(-1) - if n_times >= 500: - mock_self.display.simulate_input(ord('q')) + mock_self.display.simulate_input(ord('q')) def test_run_failed_module_live(self): """Test that running a existing module that fails exits with clean error.""" diff --git a/Misc/NEWS.d/next/Tests/2026-05-25-15-39-53.gh-issue-150387.yzZ7jq.rst b/Misc/NEWS.d/next/Tests/2026-05-25-15-39-53.gh-issue-150387.yzZ7jq.rst new file mode 100644 index 000000000000000..663a357a1792042 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2026-05-25-15-39-53.gh-issue-150387.yzZ7jq.rst @@ -0,0 +1,5 @@ +Fix hang in +``test.test_profiling.test_sampling_profiler.test_live_collector_ui.TestLiveModeErrors.test_run_failed_script_live`` +on slow buildbots. The test now always queues a final ``q`` keystroke so the +live TUI loop exits even when the profiler collects enough samples to enter +the post-finished input loop.