[Python-Dev] Regression in unicodestr.encode()?

Tim Peters tim.one@comcast.net
Wed, 10 Apr 2002 15:34:06 -0400


> ...
> Looks like a pymalloc problem to me. Tim ?

I doubt it, but haven't spent much time on it.  If you run Barry's test
under a debug build, a call to pymalloc's realloc complains immediately upon
entry that the passed-in address suffered overwrites (i.e., whoever
malloc'ed or realloc'ed this area the preceding time wrote into positions
beyond the number of bytes they asked for):

Debug memory block at address p=00864280:
    180 bytes originally allocated
    the 4 pad bytes at p-4 are PYMALLOC_FORBIDDENBYTE, as expected
    the 4 pad bytes at tail=00864334 are not all PYMALLOC_FORBIDDENBYTE
(0xfb):
        at tail+0: 0x69 *** OUCH
        at tail+1: 0x74 *** OUCH
        at tail+2: 0x20 *** OUCH
        at tail+3: 0x75 *** OUCH
    the block was made by call #1852047475 to debug malloc/realloc
    data at p: 00 00 00 00 00 00 00 00 ... 6e 73 74 75 63 6b 20 67
Fatal Python error: bad trailing pad byte

That appears to be the "it u" near the end of the desired output (from "git
und").  So this isn't just off by 1, it's overwriting by a lot.  That may be
a pymalloc bug, but the odds don't favor it.