cpython: 7b079adb0774 (original) (raw)
Mercurial > cpython
changeset 100583:7b079adb0774
Enhance documentation on malloc debug hooks Issue #26564, #26516, #26563. [#26564]
Victor Stinner victor.stinner@gmail.com | |
---|---|
date | Fri, 18 Mar 2016 11:04:31 +0100 |
parents | 97cd199944c3 |
children | 48e106bf2add |
files | Doc/c-api/memory.rst Doc/using/cmdline.rst Doc/whatsnew/3.6.rst |
diffstat | 3 files changed, 20 insertions(+), 11 deletions(-)[+] [-] Doc/c-api/memory.rst 9 Doc/using/cmdline.rst 16 Doc/whatsnew/3.6.rst 6 |
line wrap: on
line diff
--- 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:[](#l1.7)
:c:func:`PyObject_Malloc`) are called[](#l1.8)
allocator functions of :c:data:`PYMEM_DOMAIN_OBJ` (ex:[](#l1.9)
:c:func:`PyObject_Malloc`) and :c:data:`PYMEM_DOMAIN_MEM` (ex:[](#l1.10)
:c:func:`PyMem_Malloc`) domains are called[](#l1.11)
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.[](#l1.19)
where a memory block was allocated. The debug hooks now also check[](#l1.20)
if the GIL is hold when functions of :c:data:`PYMEM_DOMAIN_OBJ` and[](#l1.21)
:c:data:`PYMEM_DOMAIN_MEM` domains are called.[](#l1.22)
--- 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
- 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 ismalloc
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[](#l2.24)
configured without ``pymalloc`` support.[](#l2.25)
--- a/Doc/whatsnew/3.6.rst +++ b/Doc/whatsnew/3.6.rst @@ -118,8 +118,10 @@ compiled in release mode using ``PYTHONM
- 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 :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.