Issue 39477: multiprocessing Pool maxtasksperchild=0 raises exception with endless traceback (original) (raw)

The following code is expected to fail:

import multiprocessing

def f(x): return x

if name == 'main': with multiprocessing.Pool(2, maxtasksperchild=0) as pool: pool.map(f, range(3))

since it uses a wrong value of the 'maxtasksperchild' parameter. I expect it to raise a ValueError but instead it starts to fill the stderr with practically endless traceback:

Process ForkPoolWorker-2: Process ForkPoolWorker-1: Traceback (most recent call last): File "/usr/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run self._target(*self._args, **self._kwargs) File "/usr/lib/python3.6/multiprocessing/pool.py", line 95, in worker assert maxtasks is None or (type(maxtasks) == int and maxtasks > 0) Traceback (most recent call last): AssertionError File "/usr/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run self._target(*self._args, **self._kwargs) File "/usr/lib/python3.6/multiprocessing/pool.py", line 95, in worker assert maxtasks is None or (type(maxtasks) == int and maxtasks > 0) AssertionError Process ForkPoolWorker-4: Process ForkPoolWorker-3: ...

I don't think this is expected behavior. Tested with Python 3.6.9 on Ubuntu 18.04.3.