[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