changeset: 100659:636fa01842f5 user: Victor Stinner date: Tue Mar 22 17:45:09 2016 +0100 files: Modules/_tracemalloc.c description: Add assertions on tracemalloc_reentrant_key Issue #26588. diff -r bbdb24611294 -r 636fa01842f5 Modules/_tracemalloc.c --- a/Modules/_tracemalloc.c Tue Mar 22 17:40:07 2016 +0100 +++ b/Modules/_tracemalloc.c Tue Mar 22 17:45:09 2016 +0100 @@ -167,7 +167,7 @@ # error "need native thread local storage (TLS)" #endif -static int tracemalloc_reentrant_key; +static int tracemalloc_reentrant_key = -1; /* Any non-NULL pointer can be used */ #define REENTRANT Py_True @@ -175,7 +175,10 @@ static int get_reentrant(void) { - void *ptr = PyThread_get_key_value(tracemalloc_reentrant_key); + void *ptr; + + assert(tracemalloc_reentrant_key != -1); + ptr = PyThread_get_key_value(tracemalloc_reentrant_key); if (ptr != NULL) { assert(ptr == REENTRANT); return 1; @@ -188,6 +191,8 @@ set_reentrant(int reentrant) { assert(reentrant == 0 || reentrant == 1); + assert(tracemalloc_reentrant_key != -1); + if (reentrant) { assert(!get_reentrant()); PyThread_set_key_value(tracemalloc_reentrant_key, REENTRANT); @@ -1018,6 +1023,7 @@ DEBUG("tracemalloc_deinit(): delete reentrant key"); #ifdef REENTRANT_THREADLOCAL PyThread_delete_key(tracemalloc_reentrant_key); + tracemalloc_reentrant_key = -1; #endif Py_XDECREF(unknown_filename);