summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2016-03-22 23:10:24 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2016-03-22 23:10:24 (GMT)
commit2f49e091100e7b834767a1a295c63938c6864e55 (patch)
tree371d395c8411647a7cb1a135dc314cb076f508a4
parentd6990d221b0528fb874561201e9a374bc0b8ac0f (diff)
downloadcpython-2f49e091100e7b834767a1a295c63938c6864e55.zip
cpython-2f49e091100e7b834767a1a295c63938c6864e55.tar.gz
cpython-2f49e091100e7b834767a1a295c63938c6864e55.tar.bz2
Fix _tracemalloc start/stop
Issue #26588: Fix _tracemalloc start/stop: don't play with the reentrant flag. set_reentrant(1) fails with an assertion error if tracemalloc_init() is called first in a thread A and tracemalloc_start() is called second in a thread B. The tracemalloc is imported in a thread A. Importing the module calls tracemalloc_init(). tracemalloc.start() is called in a thread B.
-rw-r--r--Modules/_tracemalloc.c14
1 files changed, 0 insertions, 14 deletions
diff --git a/Modules/_tracemalloc.c b/Modules/_tracemalloc.c
index fd520f3..0e5f846 100644
--- a/Modules/_tracemalloc.c
+++ b/Modules/_tracemalloc.c
@@ -740,10 +740,6 @@ tracemalloc_clear_traces(void)
assert(PyGILState_Check());
#endif
- /* Disable also reentrant calls to tracemalloc_malloc() to not add a new
- trace while we are clearing traces */
- assert(get_reentrant());
-
TABLES_LOCK();
_Py_hashtable_clear(tracemalloc_traces);
tracemalloc_traced_memory = 0;
@@ -823,11 +819,6 @@ tracemalloc_init(void)
tracemalloc_empty_traceback.frames[0].lineno = 0;
tracemalloc_empty_traceback.hash = traceback_hash(&tracemalloc_empty_traceback);
- /* Disable tracing allocations until hooks are installed. Set
- also the reentrant flag to detect bugs: fail with an assertion error
- if set_reentrant(1) is called while tracing is disabled. */
- set_reentrant(1);
-
tracemalloc_config.initialized = TRACEMALLOC_INITIALIZED;
return 0;
}
@@ -912,7 +903,6 @@ tracemalloc_start(int max_nframe)
/* everything is ready: start tracing Python memory allocations */
tracemalloc_config.tracing = 1;
- set_reentrant(0);
return 0;
}
@@ -926,10 +916,6 @@ tracemalloc_stop(void)
/* stop tracing Python memory allocations */
tracemalloc_config.tracing = 0;
- /* set the reentrant flag to detect bugs: fail with an assertion error if
- set_reentrant(1) is called while tracing is disabled. */
- set_reentrant(1);
-
/* unregister the hook on memory allocators */
#ifdef TRACE_RAW_MALLOC
PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &allocators.raw);