gh-139116: tracemalloc: Detach thread state when acquiring tables_lock (GH-139449)

* gh-139116: tracemalloc: Detach thread state when acquiring tables_lock

This prevents a deadlock when:

- One thread is in `_PyTraceMalloc_Stop`, with `TABLES_LOCK` held, calling
  `PyRefTracer_SetTracer` which wants to stop the world
- Another is thread in `PyTraceMalloc_Track`, just attached thread state, waiting
  for `TABLES_LOCK`

Detaching the thread state while waiting for `TABLES_LOCK` allows
`PyRefTracer_SetTracer` to stop the world.


Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
This commit is contained in:
Petr Viktorin
2025-09-30 16:43:49 +02:00
committed by GitHub
parent b2f5ad0c6d
commit 01157e0cdf
2 changed files with 3 additions and 1 deletions

View File

@@ -0,0 +1,2 @@
Prevent a deadlock when multiple threads start, stop and use :mod:`tracemalloc`
simultaneously.