[Python-Dev] make test failing in a spectacular way in test_codeccallbacks

Skip Montanaro skip at pobox.com
Sun Dec 21 15:03:54 EST 2003


Fresh cvs up (no local changes) on Mac OS X 10.2.8 yields this while running
test_codeccallbacks (non-framework build, configured only using
--with-pydebug):

    malloc[20582]: protecting edges
    malloc[20582]: recording stacks using standard recorder
    malloc[20582]: enabling scribbling to detect mods to free blocks
    malloc[20582]: checks heap after 1th operation and each 1000 operations
    malloc[20582]: environment variables that can be set for debug:
    - MallocGuardEdges to add 2 guard pages for each large block
    - MallocDoNotProtectPrelude to disable protection (when previous flag set)
    - MallocDoNotProtectPostlude to disable protection (when previous flag set)
    - MallocStackLogging to record all stacks.  Tools like leaks can then be applied
    - MallocStackLoggingNoCompact to record all stacks.  Needed for malloc_history
    - MallocScribble to detect writing on free blocks: 0x55 is written upon free
    - MallocCheckHeapStart <n> to check the heap from time to time after <n> operations 
    - MallocHelp - this help!
    MallocCheckHeap: PASSED check at 1th operation
    MallocCheckHeap: PASSED check at 1001th operation
    MallocCheckHeap: PASSED check at 2001th operation
    MallocCheckHeap: PASSED check at 3001th operation
    test_backslashescape (__main__.CodecCallbackTest) ... ok
    test_badandgoodbackslashreplaceexceptions (__main__.CodecCallbackTest) ... ok
    test_badandgoodignoreexceptions (__main__.CodecCallbackTest) ... ok
    test_badandgoodreplaceexceptions (__main__.CodecCallbackTest) ... ok
    test_badandgoodstrictexceptions (__main__.CodecCallbackTest) ... ok
    test_badandgoodxmlcharrefreplaceexceptions (__main__.CodecCallbackTest) ... ok
    test_badhandlerresults (__main__.CodecCallbackTest) ... ok
    test_badregistercall (__main__.CodecCallbackTest) ... ok
    test_bug828737 (__main__.CodecCallbackTest) ... ok
    test_callbacks (__main__.CodecCallbackTest) ... ok
    test_charmapencode (__main__.CodecCallbackTest) ... ok
    test_decodehelper (__main__.CodecCallbackTest) ... ok
    MallocCheckHeap: PASSED check at 4001th operation
    test_encodehelper (__main__.CodecCallbackTest) ... ok
    Debug memory block at address p=0x7cb138:
        7032 bytes originally requested
        The 4 pad bytes at p-4 are FORBIDDENBYTE, as expected.
        The 4 pad bytes at tail=0x7cccb0 are not all FORBIDDENBYTE (0xfb):
            at tail+0: 0x33 *** OUCH
            at tail+1: 0x35 *** OUCH
            at tail+2: 0x34 *** OUCH
            at tail+3: 0x3b *** OUCH
        The block was made by call #639840562 to debug malloc/realloc.
        Data at p: 00 00 00 00 00 00 00 00 ... 33 35 34 3b 26 23 31 32
    Fatal Python error: bad trailing pad byte
    Abort trap

The "Data at p" hex bytes map to ['3', '5', '4', ';', '&', '#', '1', '2'].
The Malloc messages are all from Apple's malloc() pkg with a bunch of debug
environment variables set.

I haven't dug into this any further.  I applied a new OS X security update
yesterday.  That's the only recent change to the system I'm aware of.  GCC
is

    [GCC 3.3 20030304 (Apple Computer, Inc. build 1493)] on darwin

as reported by the Python interpreter at startup.

Anyone else seen this?

Skip



More information about the Python-Dev mailing list