[Python-Dev] RE: [Zope-Coders] core dump in Zope 2.7 test suite (original) (raw)

Tim Peters tim.one at comcast.net
Tue Sep 16 16:46:31 EDT 2003


[Martin v. Löwis]

... I agree with Tim that, in no case, resize should be called for a garbage string - only valid strings (i.e. with truly allocated memory) should ever be resized.

unicode->str pointed to properly allocated memory in the failing cases, but to uninitialized allocated memory. So str[0] was just some random collection of bits from the heap, and checking

random bits < 256

wasn't enough to weed out the cases where the random bits happened to look like a negative integer. For Jeremy, str[0] was 0xcbcbcbcb (for me it was 0xcbcb), and using that as an index blew up.

...

[Tim]

Or is there an implicit assumption that PyUNICODE is always an unsigned type (in which case, why isn't the literal 256U?

[Martin]

Likely, the author of the code was subconsciously assuming so. However, that assumption is invalid, and sharing should only happen for ordinals in range(256).

I've since patched Jeremy's patch to try to live with that Py_UNICODE may be a signed type too.



More information about the Python-Dev mailing list