Issue 13106: Incorrect pool.py distributed with Python 2.7 windows 32bit (original) (raw)

The multiprocess/pool.py distributed with the Python 2.7.2 Windows Installer is different from the one distributed with the 64 bit windows installer or source tarball - and is buggy.

Specifically, see Pool._terminate_pool:

def _terminate_pool(cls, taskqueue, inqueue, outqueue, pool,
                    worker_handler, task_handler, result_handler, cache):
    # this is guaranteed to only be called once
    debug('finalizing pool')

    worker_handler._state = TERMINATE
    task_handler._state = TERMINATE
    taskqueue.put(None)                 # THIS LINE MISSING!

Without that line, termination may deadlock during Pool._help_stuff_finish. The consequence to the user is the interpreter not shutting down.