Message70551
I finally found some more time to look at this. I cut down the test-suite
to try to find a minimal failing example. I can fairly reliably make a
debug build of the trunk crash using the following nine lines
import multiprocessing.managers
def sqr(x): return x*x
manager = multiprocessing.managers.SyncManager()
manager.start()
pool = manager.Pool(4)
it = pool.imap_unordered(sqr, range(10000))
assert sorted(it) == map(sqr, range(10000))
pool.terminate()
manager.shutdown()
Typical output is:
Fatal Python error: UNREF invalid object
(followed by traceback)
or:
Assertion failed: (bp != NULL), function PyObject_Malloc, file
Objects/obmalloc.c, line 755.
or:
Debug memory block at address p=0x247778:
26 bytes originally requested
The 4 pad bytes at p-4 are not all FORBIDDENBYTE (0xfb):
at p-4: 0xdb *** OUCH
at p-3: 0xdb *** OUCH
at p-2: 0xdb *** OUCH
at p-1: 0xdb *** OUCH
Because memory is corrupted at the start, the count of bytes requested
may be bogus, and checking the trailing pad bytes may segfault.
The 4 pad bytes at tail=0x247792 are not all FORBIDDENBYTE (0xfb):
at tail+0: 0x35 *** OUCH
at tail+1: 0x00 *** OUCH
at tail+2: 0xfb
at tail+3: 0xfb
The block was made by call #4227530756 to debug malloc/realloc.
Data at p: 00 00 00 00 00 00 00 00 ... 00 00 08 00 00 00 b0 72
Fatal Python error: bad leading pad byte |
|
Date |
User |
Action |
Args |
2008-08-01 13:51:01 | mark.dickinson | set | recipients:
+ mark.dickinson, jnoller |
2008-08-01 13:51:01 | mark.dickinson | set | messageid: <1217598661.32.0.408220659616.issue3399@psf.upfronthosting.co.za> |
2008-08-01 13:51:00 | mark.dickinson | link | issue3399 messages |
2008-08-01 13:50:59 | mark.dickinson | create | |
|