diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2016-03-18 10:04:31 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2016-03-18 10:04:31 (GMT) |
commit | c2fc56836f6cb02ce6436d9eb0342dc595738e9d (patch) | |
tree | 8b36c4084231867b414009b4ee81cc1fe5267b30 | |
parent | 3ca334230712ef0e1b20f046cf62a24a1117a57a (diff) | |
download | cpython-c2fc56836f6cb02ce6436d9eb0342dc595738e9d.zip cpython-c2fc56836f6cb02ce6436d9eb0342dc595738e9d.tar.gz cpython-c2fc56836f6cb02ce6436d9eb0342dc595738e9d.tar.bz2 |
Enhance documentation on malloc debug hooks
Issue #26564, #26516, #26563.
-rw-r--r-- | Doc/c-api/memory.rst | 9 | ||||
-rw-r--r-- | Doc/using/cmdline.rst | 16 | ||||
-rw-r--r-- | Doc/whatsnew/3.6.rst | 6 |
3 files changed, 20 insertions, 11 deletions
diff --git a/Doc/c-api/memory.rst b/Doc/c-api/memory.rst index 843ccac..1787292 100644 --- a/Doc/c-api/memory.rst +++ b/Doc/c-api/memory.rst @@ -346,8 +346,9 @@ Customize Memory Allocators - Detect write before the start of the buffer (buffer underflow) - Detect write after the end of the buffer (buffer overflow) - Check that the :term:`GIL <global interpreter lock>` is held when - allocator functions of the :c:data:`PYMEM_DOMAIN_OBJ` domain (ex: - :c:func:`PyObject_Malloc`) are called + allocator functions of :c:data:`PYMEM_DOMAIN_OBJ` (ex: + :c:func:`PyObject_Malloc`) and :c:data:`PYMEM_DOMAIN_MEM` (ex: + :c:func:`PyMem_Malloc`) domains are called On error, the debug hooks use the :mod:`tracemalloc` module to get the traceback where a memory block was allocated. The traceback is only @@ -361,7 +362,9 @@ Customize Memory Allocators .. versionchanged:: 3.6 This function now also works on Python compiled in release mode. On error, the debug hooks now use :mod:`tracemalloc` to get the traceback - where a memory block was allocated. + where a memory block was allocated. The debug hooks now also check + if the GIL is hold when functions of :c:data:`PYMEM_DOMAIN_OBJ` and + :c:data:`PYMEM_DOMAIN_MEM` domains are called. .. _pymalloc: diff --git a/Doc/using/cmdline.rst b/Doc/using/cmdline.rst index 684ccb6..4555982 100644 --- a/Doc/using/cmdline.rst +++ b/Doc/using/cmdline.rst @@ -638,16 +638,20 @@ conflict. Install debug hooks: * ``debug``: install debug hooks on top of the default memory allocator - * ``malloc_debug``: same than ``malloc`` but also install debug hooks - * ``pymalloc_debug``: same than ``malloc`` but also install debug hooks + * ``malloc_debug``: same as ``malloc`` but also install debug hooks + * ``pymalloc_debug``: same as ``pyalloc`` but also install debug hooks + + When is compiled in release mode, the default is ``pymalloc``. When Python + is compiled in debug mode, the default is ``pymalloc_debug``: debug hooks + are installed. + + If Python is configured without ``pymalloc`` support, ``pymalloc`` and + ``pymalloc_debug`` are not available, the default is ``malloc`` in release + mode and ``malloc_debug`` in debug mode. See the :c:func:`PyMem_SetupDebugHooks` function for debug hooks on Python memory allocators. - .. note:: - ``pymalloc`` and ``pymalloc_debug`` are not available if Python is - configured without ``pymalloc`` support. - .. versionadded:: 3.6 diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst index 443e46a..411332f 100644 --- a/Doc/whatsnew/3.6.rst +++ b/Doc/whatsnew/3.6.rst @@ -118,8 +118,10 @@ compiled in release mode using ``PYTHONMALLOC=debug``. Effects of debug hooks: * Detect write before the start of the buffer (buffer underflow) * Detect write after the end of the buffer (buffer overflow) * Check that the :term:`GIL <global interpreter lock>` is held when allocator - functions of the :c:data:`PYMEM_DOMAIN_OBJ` domain (ex: - :c:func:`PyObject_Malloc`) are called + functions of :c:data:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) and + :c:data:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) domains are called. + +Checking if the GIL is hold is also a new feature of Python 3.6. See the :c:func:`PyMem_SetupDebugHooks` function for debug hooks on Python memory allocators. |