[Python-Dev] Activating pymalloc

Jack Jansen Jack.Jansen@oratrix.com
Fri, 15 Mar 2002 10:54:44 +0100


On Friday, March 15, 2002, at 08:20 , Tim Peters wrote:

> [Andrew MacIntyre]
>> My OS/2 build definitely uses threads (don't remember what FreeBSD
>> ./configures to), and survives all the threading tests - which may not
>> highlight the problems you're referring to.
>
> Switching to pymalloc shouldn't be a correctness issue for code playing
> strictly by the rules.  The historical problem is that the Python C API
> exposes more different spellings for "get memory" and "free memory" 
> than you
> may believe possible, "the rules" for navigating this maze aren't
> documented, and so far all the spellings have reduced to plain "malloc" 
> and
> "free".

This may be overkill, but we could check correct usage of allocator/free 
pairs in a DEBUG build. At the end of pymem.h conditionally include 
pymemdebug.h which painstakingly replaces all the *alloc and *free 
defines with versions that go to a set of routines that check that 
something freed with PyFooBAR_FREE() has actually been allocated with 
PyFooBAR_ALLOC(). The accompanying pymemdebug.c would have magic to 
disable the inclusion of pymemdebug.h when it includes pymem.h, so the 
debugging routines actually get to use what was defined in pymem.h.
--
- Jack Jansen        <Jack.Jansen@oratrix.com>        
http://www.cwi.nl/~jack -
- If I can't dance I don't want to be part of your revolution -- Emma 
Goldman -