mirror of
https://github.com/python/cpython.git
synced 2026-01-17 12:50:02 +00:00
The forkserver was not passing sys.argv to its main() function, causing
sys.argv to be empty during `__main__` module import in child processes. This
fixes a non-obvious regression inadvertently introduced by the gh-126631 main
preloading fix.
(cherry picked from commit 298d5440eb)
22 lines
567 B
Python
22 lines
567 B
Python
# gh-143706: Test that sys.argv is correctly set during main module import
|
|
# when using forkserver with __main__ preloading.
|
|
|
|
import multiprocessing
|
|
import sys
|
|
|
|
# This will be printed during module import - sys.argv should be correct here
|
|
print(f"module:{sys.argv[1:]}")
|
|
|
|
def fun():
|
|
# This will be printed when the function is called
|
|
print(f"fun:{sys.argv[1:]}")
|
|
|
|
if __name__ == "__main__":
|
|
ctx = multiprocessing.get_context("forkserver")
|
|
ctx.set_forkserver_preload(['__main__'])
|
|
|
|
fun()
|
|
|
|
p = ctx.Process(target=fun)
|
|
p.start()
|
|
p.join()
|