Eric Froemling
7686abe063
gh-149085: Add max_threads keyword to faulthandler.dump_traceback() (GH-149106)
...
Add a keyword-only `max_threads` argument to `dump_traceback()` and
`dump_traceback_later()`, defaulting to 100 to preserve existing
behavior. Allows server processes with many worker threads to dump
beyond the historical 100-thread cap (previously a hardcoded
`MAX_NTHREADS = 100` in `Python/traceback.c`).
The cap matters in practice: tstates are prepended to the
PyInterpreterState linked list, so the dump walks newest-first. With
more than 100 threads alive, the main thread (oldest, at the tail) is
silently elided from watchdog dumps -- exactly the thread that's
usually wanted.
The hardcoded value is moved to a new internal macro
`_Py_TRACEBACK_MAX_NTHREADS` in `pycore_traceback.h` so the in-tree
fatal-signal callers all reference one source of truth.
2026-04-30 09:27:57 -04:00
..
2026-04-24 16:36:46 +00:00
2026-03-24 17:47:55 +00:00
2026-03-24 17:47:55 +00:00
2025-07-22 16:47:24 +01:00
2026-03-30 22:04:04 +02:00
2026-01-30 20:37:52 -08:00
2026-03-09 10:37:23 -07:00
2026-01-30 20:37:52 -08:00
2026-04-27 19:28:30 -07:00
2025-03-17 09:19:04 +00:00
2026-04-28 13:48:23 +01:00
2026-03-02 11:47:32 +01:00
2026-04-16 09:44:26 -07:00
2026-04-27 09:21:53 +02:00
2026-04-22 09:08:23 +01:00
2025-10-03 13:33:49 +02:00
2026-04-30 10:05:48 +00:00
2026-04-25 10:47:41 +01:00
2026-01-06 12:24:02 +05:30
2026-02-06 15:14:08 +00:00
2026-04-01 18:34:55 +02:00
2025-06-13 16:45:21 -06:00
2026-04-06 11:37:02 -04:00
2026-03-11 12:39:24 +01:00
2026-04-01 16:14:59 +02:00
2025-05-08 15:01:25 +00:00
2025-07-22 15:05:26 +02:00
2025-09-17 15:33:55 +01:00
2026-02-26 06:21:05 +08:00
2026-03-27 11:20:19 +00:00
2026-04-28 13:48:23 +01:00
2025-11-18 17:34:58 +01:00
2026-04-26 15:15:24 +03:00
2026-02-06 09:43:36 -05:00
2026-04-14 21:01:23 +01:00
2025-08-06 14:33:28 +02:00
2024-10-29 23:57:59 +00:00
2026-04-04 18:42:30 +01:00
2026-04-04 18:42:30 +01:00
2026-04-24 10:37:01 +01:00
2026-03-31 10:59:17 +03:00
2025-11-10 15:50:51 +01:00
2024-11-12 15:59:19 +02:00
2025-05-05 15:09:19 +00:00
2025-06-16 23:32:52 +09:00
2026-03-11 21:08:18 +00:00
2026-04-06 22:29:02 +01:00
2025-11-26 14:12:49 +01:00
2025-05-25 20:19:29 +00:00
2026-03-25 19:09:56 +00:00
2026-01-16 09:11:58 +00:00
2026-04-22 09:08:23 +01:00
2026-03-31 10:59:17 +03:00
2025-10-11 22:58:14 +02:00
2026-04-23 12:23:18 +01:00
2026-04-10 17:58:17 +05:30
2026-04-22 14:31:19 -04:00
2026-04-18 11:24:33 +03:00
2026-04-02 13:54:21 +02:00
2026-04-16 15:22:22 +01:00
2026-04-27 17:34:09 +01:00
2026-04-30 10:36:04 +01:00
2026-04-30 10:36:04 +01:00
2026-04-13 02:23:47 +08:00
2026-04-28 13:41:16 +01:00
2026-04-22 14:31:19 -04:00
2025-05-09 11:39:23 +00:00
2026-01-28 13:30:17 +00:00
2026-02-14 11:41:28 +00:00
2026-04-11 21:54:23 +00:00
2024-11-07 16:37:41 +01:00
2026-02-21 12:42:13 +01:00
2026-04-30 09:27:57 -04:00
2026-04-24 10:37:01 +01:00
2026-04-24 10:37:01 +01:00
2026-04-16 11:21:23 +05:30
2025-11-12 13:44:49 +01:00
2026-04-28 02:51:06 +00:00
2026-03-24 17:47:55 +00:00
2026-03-31 10:59:17 +03:00
2026-03-10 09:45:07 +01:00
2026-02-17 11:12:25 -05:00
2026-04-28 13:41:16 +01:00
2026-02-26 21:14:34 +00:00
2025-12-06 22:37:34 +00:00
2026-04-16 09:44:26 -07:00
2025-11-05 11:12:56 -08:00
2025-10-31 16:13:43 +02:00
2026-01-06 11:36:00 +02:00
2025-03-17 09:19:04 +00:00
2026-04-15 21:52:30 -07:00
2026-04-11 21:54:23 +00:00
2025-05-30 10:15:47 +00:00
2024-10-13 20:59:41 +05:30
2025-08-20 17:10:44 +00:00
2025-11-06 16:10:39 +01:00
2026-04-30 09:27:57 -04:00
2026-02-18 15:57:48 +00:00
2025-01-17 16:42:27 +01:00
2025-04-29 12:56:20 +02:00