-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed as not planned
Closed as not planned
Copy link
Labels
pendingThe issue will be closed if no feedback is providedThe issue will be closed if no feedback is providedtype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump
Description
Crash report
What happened?
It seems that the below code will serialize the pointer to the lock handle over to the child process, and then rebuild the raw pointer in https://github.com/python/cpython/blob/main/Modules/_multiprocessing/clinic/semaphore.c.h#L331
this then segfaults the child process - which seems to cause new children to spin up.
import multiprocessing
import os
def _init(l):
print(os.getpid())
print(l)
def main():
ctx = multiprocessing.get_context(method="spawn")
lock = multiprocessing.Lock()
with ctx.Pool(1, initializer=_init, initargs=(lock,)) as pool:
ret = pool.map(print, [1])
if __name__ == "__main__":
main()
CPython versions tested on:
3.10, 3.11
Operating systems tested on:
Linux
Output from running 'python -VV' on the command line:
No response
Metadata
Metadata
Assignees
Labels
pendingThe issue will be closed if no feedback is providedThe issue will be closed if no feedback is providedtype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump