[Python-Dev] pymalloc killer (original) (raw)

Martin v. Loewis martin@v.loewis.de
30 Mar 2002 17:56:51 +0100


Guido van Rossum <guido@python.org> writes:

How about if the PyMemFree guy saved the address of the vector before using it, and checked that it was still the same afterwards, and if the PyMemMalloc guy didn't use realloc to resize the vector but copied it to a newly malloc'ed vector, stored the new vector's address, and then freed the old vector?

That doesn't really help. The code currently does

((I) < narenas && (uptr)(P) - arenas[I] < (uptr)ARENA_SIZE)

So if the PyMem_Free thread blocks (yields by OS command) after fetching arenas, but before fetching arenas[i], then the PyMem_Malloc thread could still free the memory under it.

Regards, Martin