summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2016-03-22 22:54:42 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2016-03-22 22:54:42 (GMT)
commitf9a71153e9122a3d2bb86fc479bdda2f2adc859e (patch)
tree5ac6eada02b6c077b240eb90300f6fbd21915d24
parent92c21d7a7c3a925358e606ffa7ab25cc7e73f0b3 (diff)
downloadcpython-f9a71153e9122a3d2bb86fc479bdda2f2adc859e.zip
cpython-f9a71153e9122a3d2bb86fc479bdda2f2adc859e.tar.gz
cpython-f9a71153e9122a3d2bb86fc479bdda2f2adc859e.tar.bz2
Issue #26588: remove debug traces from _tracemalloc.
-rw-r--r--Include/pymem.h2
-rw-r--r--Lib/test/test_tracemalloc.py10
-rw-r--r--Lib/test/test_warnings/__init__.py1
-rw-r--r--Modules/_testcapimodule.c14
-rw-r--r--Modules/_tracemalloc.c69
5 files changed, 5 insertions, 91 deletions
diff --git a/Include/pymem.h b/Include/pymem.h
index 3fac523..941e00f 100644
--- a/Include/pymem.h
+++ b/Include/pymem.h
@@ -59,8 +59,6 @@ PyAPI_FUNC(int) _PyTraceMalloc_Untrack(
PyAPI_FUNC(PyObject*) _PyTraceMalloc_GetTraceback(
_PyTraceMalloc_domain_t domain,
Py_uintptr_t ptr);
-
-PyAPI_DATA(int) tracemalloc_debug;
#endif /* !Py_LIMITED_API */
diff --git a/Lib/test/test_tracemalloc.py b/Lib/test/test_tracemalloc.py
index 44cd539..359d9c0 100644
--- a/Lib/test/test_tracemalloc.py
+++ b/Lib/test/test_tracemalloc.py
@@ -88,9 +88,6 @@ def traceback_filename(filename):
class TestTracemallocEnabled(unittest.TestCase):
def setUp(self):
- if _testcapi:
- _testcapi.tracemalloc_set_debug(True)
-
if tracemalloc.is_tracing():
self.skipTest("tracemalloc must be stopped before the test")
@@ -98,8 +95,6 @@ class TestTracemallocEnabled(unittest.TestCase):
def tearDown(self):
tracemalloc.stop()
- if _testcapi:
- _testcapi.tracemalloc_set_debug(False)
def test_get_tracemalloc_memory(self):
data = [allocate_bytes(123) for count in range(1000)]
@@ -882,9 +877,6 @@ class TestCAPI(unittest.TestCase):
maxDiff = 80 * 20
def setUp(self):
- if _testcapi:
- _testcapi.tracemalloc_set_debug(True)
-
if tracemalloc.is_tracing():
self.skipTest("tracemalloc must be stopped before the test")
@@ -898,8 +890,6 @@ class TestCAPI(unittest.TestCase):
def tearDown(self):
tracemalloc.stop()
- if _testcapi:
- _testcapi.tracemalloc_set_debug(False)
def get_traceback(self):
frames = _testcapi.tracemalloc_get_traceback(self.domain, self.ptr)
diff --git a/Lib/test/test_warnings/__init__.py b/Lib/test/test_warnings/__init__.py
index f2401c8..e6f47cd 100644
--- a/Lib/test/test_warnings/__init__.py
+++ b/Lib/test/test_warnings/__init__.py
@@ -772,7 +772,6 @@ class CWarningsDisplayTests(WarningsDisplayTests, unittest.TestCase):
class PyWarningsDisplayTests(WarningsDisplayTests, unittest.TestCase):
module = py_warnings
- @unittest.skipIf(True, "FIXME: Issue #26588")
def test_tracemalloc(self):
self.addCleanup(support.unlink, support.TESTFN)
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index f952aec..8c79485 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -3747,19 +3747,6 @@ tracemalloc_get_traceback(PyObject *self, PyObject *args)
return _PyTraceMalloc_GetTraceback(domain, (Py_uintptr_t)ptr);
}
-PyObject*
-tracemalloc_set_debug(PyObject *self, PyObject *args)
-{
- int debug;
- extern int tracemalloc_debug;
-
- if (!PyArg_ParseTuple(args, "i", &debug))
- return NULL;
-
- tracemalloc_debug = debug;
- Py_RETURN_NONE;
-}
-
static PyMethodDef TestMethods[] = {
{"raise_exception", raise_exception, METH_VARARGS},
@@ -3949,7 +3936,6 @@ static PyMethodDef TestMethods[] = {
{"tracemalloc_track", tracemalloc_track, METH_VARARGS},
{"tracemalloc_untrack", tracemalloc_untrack, METH_VARARGS},
{"tracemalloc_get_traceback", tracemalloc_get_traceback, METH_VARARGS},
- {"tracemalloc_set_debug", tracemalloc_set_debug, METH_VARARGS},
{NULL, NULL} /* sentinel */
};
diff --git a/Modules/_tracemalloc.c b/Modules/_tracemalloc.c
index a674d0c..77742de 100644
--- a/Modules/_tracemalloc.c
+++ b/Modules/_tracemalloc.c
@@ -45,8 +45,6 @@ static struct {
int use_domain;
} tracemalloc_config = {TRACEMALLOC_NOT_INITIALIZED, 0, 1, 1};
-int tracemalloc_debug = 0;
-
#if defined(TRACE_RAW_MALLOC) && defined(WITH_THREAD)
/* This lock is needed because tracemalloc_free() is called without
the GIL held from PyMem_RawFree(). It cannot acquire the lock because it
@@ -898,35 +896,23 @@ tracemalloc_clear_traces(void)
_Py_hashtable_clear(tracemalloc_filenames);
}
-#define DEBUG(MSG) \
- if (tracemalloc_debug) { fprintf(stderr, "[pid %li, tid %li, reentrant key %i] " MSG "\n", (long)getpid(), PyThread_get_thread_ident(), tracemalloc_reentrant_key); fflush(stderr); }
-
static int
tracemalloc_init(void)
{
-DEBUG("tracemalloc_init()");
-
-#ifdef WITH_THREAD
- assert(PyGILState_Check());
-#endif
-
if (tracemalloc_config.initialized == TRACEMALLOC_FINALIZED) {
PyErr_SetString(PyExc_RuntimeError,
"the tracemalloc module has been unloaded");
return -1;
}
- if (tracemalloc_config.initialized == TRACEMALLOC_INITIALIZED) {
-DEBUG("tracemalloc_init(): exit (already initialized)");
+ if (tracemalloc_config.initialized == TRACEMALLOC_INITIALIZED)
return 0;
- }
PyMem_GetAllocator(PYMEM_DOMAIN_RAW, &allocators.raw);
#ifdef REENTRANT_THREADLOCAL
tracemalloc_reentrant_key = PyThread_create_key();
-fprintf(stderr, "[pid %li, tid %li] PyThread_create_key() -> %i\n", (long)getpid(), PyThread_get_thread_ident(), tracemalloc_reentrant_key); fflush(stderr);
if (tracemalloc_reentrant_key == -1) {
#ifdef MS_WINDOWS
PyErr_SetFromWindowsErr(0);
@@ -988,12 +974,9 @@ fprintf(stderr, "[pid %li, tid %li] PyThread_create_key() -> %i\n", (long)getpid
/* 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. */
-DEBUG("tracemalloc_init(): set_reentrant(1)");
set_reentrant(1);
tracemalloc_config.initialized = TRACEMALLOC_INITIALIZED;
-DEBUG("tracemalloc_init(): done");
-assert(get_reentrant());
return 0;
}
@@ -1001,11 +984,8 @@ assert(get_reentrant());
static void
tracemalloc_deinit(void)
{
-DEBUG("tracemalloc_deinit()");
- if (tracemalloc_config.initialized != TRACEMALLOC_INITIALIZED) {
-DEBUG("tracemalloc_deinit(): exit (not initialized)");
+ if (tracemalloc_config.initialized != TRACEMALLOC_INITIALIZED)
return;
- }
tracemalloc_config.initialized = TRACEMALLOC_FINALIZED;
tracemalloc_stop();
@@ -1022,15 +1002,12 @@ DEBUG("tracemalloc_deinit(): exit (not initialized)");
}
#endif
-DEBUG("tracemalloc_deinit(): delete reentrant key");
#ifdef REENTRANT_THREADLOCAL
-fprintf(stderr, "[pid %li, tid %li] PyThread_delete_key(%i)\n", (long)getpid(), PyThread_get_thread_ident(), tracemalloc_reentrant_key); fflush(stderr);
PyThread_delete_key(tracemalloc_reentrant_key);
tracemalloc_reentrant_key = -1;
#endif
Py_XDECREF(unknown_filename);
-DEBUG("tracemalloc_deinit(): done");
}
@@ -1040,24 +1017,13 @@ tracemalloc_start(int max_nframe)
PyMemAllocatorEx alloc;
size_t size;
-DEBUG("tracemalloc_start()");
-
-#ifdef WITH_THREAD
- assert(PyGILState_Check());
-#endif
-
- if (tracemalloc_init() < 0) {
-DEBUG("tracemalloc_start(): ERROR! init failed!");
+ if (tracemalloc_init() < 0)
return -1;
- }
if (tracemalloc_config.tracing) {
/* hook already installed: do nothing */
-DEBUG("tracemalloc_start(): exit (already tracing)");
-assert(!get_reentrant());
return 0;
}
-assert(get_reentrant());
assert(1 <= max_nframe && max_nframe <= MAX_NFRAME);
tracemalloc_config.max_nframe = max_nframe;
@@ -1097,12 +1063,8 @@ assert(get_reentrant());
/* everything is ready: start tracing Python memory allocations */
tracemalloc_config.tracing = 1;
-
-DEBUG("tracemalloc_start(): set_reentrant(0)");
set_reentrant(0);
-DEBUG("tracemalloc_start(): done");
-assert(!get_reentrant());
return 0;
}
@@ -1110,25 +1072,14 @@ assert(!get_reentrant());
static void
tracemalloc_stop(void)
{
-DEBUG("tracemalloc_stop()");
-
-#ifdef WITH_THREAD
- assert(PyGILState_Check());
-#endif
-
- if (!tracemalloc_config.tracing) {
-DEBUG("tracemalloc_stop(): exit (not tracing)");
-assert(get_reentrant());
+ if (!tracemalloc_config.tracing)
return;
- }
-assert(!get_reentrant());
/* 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. */
-DEBUG("tracemalloc_stop(): set_reentrant(1)");
set_reentrant(1);
/* unregister the hook on memory allocators */
@@ -1143,8 +1094,6 @@ DEBUG("tracemalloc_stop(): set_reentrant(1)");
/* release memory */
raw_free(tracemalloc_traceback);
tracemalloc_traceback = NULL;
-DEBUG("tracemalloc_stop(): done");
-assert(get_reentrant());
}
PyDoc_STRVAR(tracemalloc_is_tracing_doc,
@@ -1512,11 +1461,8 @@ py_tracemalloc_start(PyObject *self, PyObject *args)
}
nframe_int = Py_SAFE_DOWNCAST(nframe, Py_ssize_t, int);
- if (tracemalloc_start(nframe_int) < 0) {
-DEBUG("start(): ERROR!");
+ if (tracemalloc_start(nframe_int) < 0)
return NULL;
- }
-DEBUG("start(): done");
Py_RETURN_NONE;
}
@@ -1642,17 +1588,12 @@ PyMODINIT_FUNC
PyInit__tracemalloc(void)
{
PyObject *m;
-
-fprintf(stderr, "[pid %li, tid %li] PyInit__tracemalloc\n", (long)getpid(), PyThread_get_thread_ident()); fflush(stderr);
-
m = PyModule_Create(&module_def);
if (m == NULL)
return NULL;
-#if 0
if (tracemalloc_init() < 0)
return NULL;
-#endif
return m;
}