diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2016-03-22 23:10:24 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2016-03-22 23:10:24 (GMT) |
commit | 2f49e091100e7b834767a1a295c63938c6864e55 (patch) | |
tree | 371d395c8411647a7cb1a135dc314cb076f508a4 | |
parent | d6990d221b0528fb874561201e9a374bc0b8ac0f (diff) | |
download | cpython-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.c | 14 |
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); |