[Python-Dev] RE: test_sort.py failure (original) (raw)

Armin Rigo arigo at tunes.org
Thu Jul 29 02:20:55 CEST 2004


Hello,

On Wed, Jul 28, 2004 at 05:00:59PM -0700, Guido van Rossum wrote:

Mucking with the list causes realloc() calls to the memory block initially pointed to by emptyobitem. This is likely to move the block. But it could be that there's enough space following the block that it doesn't have to be moved, and if the array also happens to be empty after the sort (there's a certain probability that this is so), the test will pass despite the mucking.

I think Tim is right: the code used to be correct, but the list internals reorganization might have broken that. As far as I remember, the reason it used to be fine is that lists with zero elements were always deallocated, so that empty lists never had an allocated ob_items array. If user code populated and then emptied again the list during the sort, it couldn't end up again in the special state list_sort() puts it in, which is ob_size == 0 but ob_items allocated. Apparently, this can occur now.

Looks like another review of list_sort() is needed. (Some time ago, after staring at it for some time, I wondered and couldn't figure out if there was a memory leak or not, too)

Armin



More information about the Python-Dev mailing list