[issue3399] Memory corruption in multiprocessing module, OS X 10.5.4

Mark Dickinson report at bugs.python.org
Fri Jul 18 08:37:49 CEST 2008


Mark Dickinson <dickinsm at gmail.com> added the comment:

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 "<string>", 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 <module>
  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 "<string>", 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 <module>
    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

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue3399>
_______________________________________


More information about the Python-bugs-list mailing list