Bug report
Bug description:
The DummyProcess.__init__ method in multiprocessing.dummy uses a mutable default argument for kwargs:
def __init__(self, group=None, target=None, name=None, args=(), kwargs={}):
This can lead to unexpected behavior if the same dictionary is modified between calls.
Other threading-based classes like threading.Thread and threading.Timer already use None as the default and initialize a new dict inside the constructor.
CPython versions tested on:
CPython main branch, 3.13, 3.14, 3.15
Operating systems tested on:
Linux
Linked PRs
- gh-138813: Fix mutable default kwargs={} in multiprocessing BaseProcess and DummyProcess to use None #138814
- [3.13] gh-138813: Fix mutable default kwargs={} in multiprocessing BaseProcess and DummyProcess to use None (GH-138814) #139083
- [3.14] gh-138813: Fix mutable default kwargs={} in multiprocessing BaseProcess and DummyProcess to use None (GH-138814) #139084