[Python-checkins] python/dist/src/Misc SpecialBuilds.txt,1.7,1.8
tim_one@users.sourceforge.net
tim_one@users.sourceforge.net
Wed, 10 Jul 2002 17:24:00 -0700
Update of /cvsroot/python/python/dist/src/Misc
In directory usw-pr-cvs1:/tmp/cvs-serv20407/python/Misc
Modified Files:
SpecialBuilds.txt
Log Message:
Recorded the introduction release for each gimmick, as best I was able to
reconstruct that info.
Filled out some sketchy explanations of pragmatics.
Index: SpecialBuilds.txt
===================================================================
RCS file: /cvsroot/python/python/dist/src/Misc/SpecialBuilds.txt,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** SpecialBuilds.txt 11 Jul 2002 00:02:52 -0000 1.7
--- SpecialBuilds.txt 11 Jul 2002 00:23:58 -0000 1.8
***************
*** 3,7 ****
---------------------------------------------------------------------------
! Py_REF_DEBUG
Turn on aggregate reference counting. This arranges that extern
--- 3,8 ----
---------------------------------------------------------------------------
! Py_REF_DEBUG introduced in 1.4
! named REF_DEBUG before 1.4
Turn on aggregate reference counting. This arranges that extern
***************
*** 29,33 ****
Before 2.3, Py_TRACE_REFS was required to enable this function.
---------------------------------------------------------------------------
! Py_TRACE_REFS
Turn on heavy reference debugging. This is major surgery. Every PyObject
--- 30,35 ----
Before 2.3, Py_TRACE_REFS was required to enable this function.
---------------------------------------------------------------------------
! Py_TRACE_REFS introduced in 1.4
! named TRACE_REFS before 1.4
Turn on heavy reference debugging. This is major surgery. Every PyObject
***************
*** 59,63 ****
all still-live heap objects.
---------------------------------------------------------------------------
! PYMALLOC_DEBUG
When pymalloc is enabled (WITH_PYMALLOC is defined), calls to the PyObject_
--- 61,65 ----
all still-live heap objects.
---------------------------------------------------------------------------
! PYMALLOC_DEBUG introduced in 2.3
When pymalloc is enabled (WITH_PYMALLOC is defined), calls to the PyObject_
***************
*** 91,100 ****
Copies of FORBIDDENBYTE. Used to catch under- writes and reads.
p[0:N]
! The requested memory, filled with copies of CLEANBYTE.
! Used to catch reference to uninitialized memory.
When a realloc-like function is called requesting a larger memory
block, the new excess bytes are also filled with CLEANBYTE.
When a free-like function is called, these are overwritten with
! DEADBYTE, to catch reference to free()ed memory. When a realloc-
like function is called requesting a smaller memory block, the excess
old bytes are also filled with DEADBYTE.
--- 93,102 ----
Copies of FORBIDDENBYTE. Used to catch under- writes and reads.
p[0:N]
! The requested memory, filled with copies of CLEANBYTE, used to catch
! reference to uninitialized memory.
When a realloc-like function is called requesting a larger memory
block, the new excess bytes are also filled with CLEANBYTE.
When a free-like function is called, these are overwritten with
! DEADBYTE, to catch reference to freed memory. When a realloc-
like function is called requesting a smaller memory block, the excess
old bytes are also filled with DEADBYTE.
***************
*** 111,117 ****
is incremented, and exists so you can set such a breakpoint easily.
! A malloc-like or free-like function first checks that the FORBIDDENBYTEs
at each end are intact. If they've been altered, diagnostic output is
! written to stderr, and the program is aborted by Py_FatalError().
Note that PYMALLOC_DEBUG requires WITH_PYMALLOC.
--- 113,124 ----
is incremented, and exists so you can set such a breakpoint easily.
! A realloc-like or free-like function first checks that the FORBIDDENBYTEs
at each end are intact. If they've been altered, diagnostic output is
! written to stderr, and the program is aborted via Py_FatalError(). The
! other main failure mode is provoking a memory error when a program
! reads up one of the special bit patterns and tries to use it as an address.
! If you get in a debugger then and look at the object, you're likely
! to see that it's entirely filled with 0xDB (meaning freed memory is
! getting used) or 0xCB (meaning uninitialized memory is getting used).
Note that PYMALLOC_DEBUG requires WITH_PYMALLOC.
***************
*** 124,128 ****
by Py_Finalize().
---------------------------------------------------------------------------
! Py_DEBUG
This is what is generally meant by "a debug build" of Python.
--- 131,136 ----
by Py_Finalize().
---------------------------------------------------------------------------
! Py_DEBUG introduced in 1.5
! named DEBUG before 1.5
This is what is generally meant by "a debug build" of Python.
***************
*** 133,137 ****
sanity checks inside "#ifdef Py_DEBUG" blocks.
---------------------------------------------------------------------------
! COUNT_ALLOCS
Each type object grows three new members:
--- 141,145 ----
sanity checks inside "#ifdef Py_DEBUG" blocks.
---------------------------------------------------------------------------
! COUNT_ALLOCS introduced in 0.9.9
Each type object grows three new members: