Issue 3399: Memory corruption in multiprocessing module, OS X 10.5.4 (original) (raw)

Okay: I just tried the following:

(1) clean svn checkout (2) ./configure && make (3) 100 runs of test_multiprocessing, via the shell command: for ((i=0;i<100;i+=1)); do ./python.exe Lib/test/test_multiprocessing.py; sleep 1; done

I got 4 failed runs out of those 100 runs (details below); 2 hangs in test_notify_all, a KeyError in test_remote, and a failure of test_number_of_objects.

Failed run 1

test_notify_all (main.WithManagerTestCondition) ... Process Process- 48: Traceback (most recent call last): File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap self.run() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "Lib/test/test_multiprocessing.py", line 600, in f cond.acquire() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 946, in acquire return self._callmethod('acquire', (blocking,)) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 718, in _callmethod self._connect() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 705, in _connect conn = self._Client(self._token.address, authkey=self._authkey) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/connection.py", line 133, in Client c = SocketClient(address) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/connection.py", line 254, in SocketClient s.connect(address) File "", line 1, in connect error: [Errno 61] Connection refused ^CProcess PoolWorker-5:4: Traceback (most recent call last): File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap Process PoolWorker-5:3: Traceback (most recent call last): self.run() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/pool.py", line 57, in worker File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap task = get() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/queues.py", line 337, in get self.run() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/pool.py", line 57, in worker racquire() KeyboardInterrupt task = get() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/queues.py", line 337, in get racquire() KeyboardInterrupt Process PoolWorker-5:1: Traceback (most recent call last): File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap Process Process-50: Process Process-49: Traceback (most recent call last): self.run() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/pool.py", line 57, in worker task = get() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/queues.py", line 339, in get self.run() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "Lib/test/test_multiprocessing.py", line 602, in f return recv() KeyboardInterrupt cond.wait(timeout) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 959, in wait return self._callmethod('wait', (timeout,)) Traceback (most recent call last): File "Lib/test/test_multiprocessing.py", line 1786, in File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 722, in _callmethod kind, result = conn.recv() KeyboardInterrupt main() File "Lib/test/test_multiprocessing.py", line 1783, in main test_main(unittest.TextTestRunner(verbosity=2).run) File "Lib/test/test_multiprocessing.py", line 1773, in test_main run(suite) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 750, in run Process PoolWorker-5:2: test(result) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 461, in call return self.run(*args, **kwds) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 457, in run test(result) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 461, in call return self.run(*args, **kwds) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 457, in run test(result) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 300, in call return self.run(*args, **kwds) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 279, in run testMethod() File "Lib/test/test_multiprocessing.py", line 701, in test_notify_all sleeping.acquire() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 946, in acquire return self._callmethod('acquire', (blocking,)) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 722, in _callmethod kind, result = conn.recv() KeyboardInterrupt Traceback (most recent call last): File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap self.run() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "Lib/test/test_multiprocessing.py", line 602, in f cond.wait(timeout) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 959, in wait return self._callmethod('wait', (timeout,)) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 722, in _callmethod kind, result = conn.recv() KeyboardInterrupt Traceback (most recent call last):

Failed run 2

test_task_done (main.WithManagerTestQueue) ... ok test_remote (main.WithManagerTestRemoteManager) ... ERROR test_bounded_semaphore (main.WithManagerTestSemaphore) ... ok test_semaphore (main.WithManagerTestSemaphore) ... ok test_timeout (main.WithManagerTestSemaphore) ... ok test_getobj_getlock (main.WithManagerTestValue) ... ok test_rawvalue (main.WithManagerTestValue) ... ok test_value (main.WithManagerTestValue) ... ok test_number_of_objects (main.WithManagerTestZZZNumberOfObjects) ... ok

====================================================================== ERROR: test_remote (main.WithManagerTestRemoteManager)

Traceback (most recent call last): File "Lib/test/test_multiprocessing.py", line 1157, in test_remote queue = manager2.get_queue() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 635, in temp authkey=self._authkey, exposed=exp File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 887, in AutoProxy incref=incref) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 696, in init self._incref() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 743, in _incref dispatch(conn, None, 'incref', (self._id,)) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 79, in dispatch raise convert_to_error(kind, result) RemoteError:


Traceback (most recent call last): File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 181, in handle_request result = func(c, *args, **kwds) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 397, in incref self.id_to_refcount[ident] += 1 KeyError: '5bf968'



Ran 121 tests in 9.230s

FAILED (errors=1)

Failed run 3

test_number_of_objects (main.WithManagerTestZZZNumberOfObjects) ...
680490: refcount=1 <threading._Semaphore object at 0x680490> 680bd0: refcount=1 <multiprocessing.pool.Pool object at 0x680bd0> FAIL

====================================================================== FAIL: test_number_of_objects (main.WithManagerTestZZZNumberOfObjects)

Traceback (most recent call last): File "Lib/test/test_multiprocessing.py", line 1042, in test_number_of_objects self.assertEqual(refs, EXPECTED_NUMBER) AssertionError: 2 != 1


Ran 121 tests in 9.228s

FAILED (failures=1)

Failed run 4

test_notify_all (main.WithManagerTestCondition) ... Process Process- 50: Traceback (most recent call last): File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap self.run() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "Lib/test/test_multiprocessing.py", line 600, in f cond.acquire() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 946, in acquire return self._callmethod('acquire', (blocking,)) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 718, in _callmethod self._connect() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 705, in _connect conn = self._Client(self._token.address, authkey=self._authkey) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/connection.py", line 133, in Client c = SocketClient(address) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/connection.py", line 254, in SocketClient s.connect(address) File "", line 1, in connect error: [Errno 61] Connection refused ^CProcess PoolWorker-5:4: Traceback (most recent call last): File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap Process PoolWorker-5:3: Traceback (most recent call last): self.run() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/pool.py", line 57, in worker File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap task = get() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/queues.py", line 337, in get racquire() self.run() KeyboardInterrupt File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/pool.py", line 57, in worker task = get() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/queues.py", line 337, in get racquire() KeyboardInterrupt Process PoolWorker-5:1: Traceback (most recent call last): File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap Process Process-48: self.run() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) Traceback (most recent call last): File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/pool.py", line 57, in worker task = get() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/queues.py", line 339, in get File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap return recv() KeyboardInterrupt self.run() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "Lib/test/test_multiprocessing.py", line 602, in f cond.wait(timeout) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 959, in wait Traceback (most recent call last): File "Lib/test/test_multiprocessing.py", line 1786, in return self._callmethod('wait', (timeout,)) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 722, in _callmethod kind, result = conn.recv() KeyboardInterrupt main() File "Lib/test/test_multiprocessing.py", line 1783, in main test_main(unittest.TextTestRunner(verbosity=2).run) File "Lib/test/test_multiprocessing.py", line 1773, in test_main Process PoolWorker-5:2: run(suite) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 750, in run Traceback (most recent call last): test(result) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 461, in call File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap return self.run(*args, **kwds) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 457, in run test(result) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 461, in call self.run() return self.run(*args, **kwds) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 457, in run File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/pool.py", line 57, in worker test(result) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 300, in call return self.run(*args, **kwds) File "/Users/dickinsm/python_source/trunk/Lib/unittest.py", line 279, in run task = get() testMethod() File "Lib/test/test_multiprocessing.py", line 701, in test_notify_all File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/queues.py", line 337, in get sleeping.acquire() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 946, in acquire racquire() KeyboardInterrupt return self._callmethod('acquire', (blocking,)) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 722, in _callmethod kind, result = conn.recv() KeyboardInterrupt Process Process-49: Traceback (most recent call last): File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 232, in _bootstrap self.run() File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/process.py", line 88, in run self._target(*self._args, **self._kwargs) File "Lib/test/test_multiprocessing.py", line 602, in f cond.wait(timeout) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 959, in wait return self._callmethod('wait', (timeout,)) File "/Users/dickinsm/python_source/trunk/Lib/multiprocessing/managers.py", line 722, in _callmethod kind, result = conn.recv() KeyboardInterrupt