bpo-31160: Fix test_random for zombie process by vstinner · Pull Request #3045 · python/cpython
Expand Up
@@ -907,20 +907,26 @@ def __init__(self, newarg=None):
def test_after_fork(self):
# Test the global Random instance gets reseeded in child
r, w = os.pipe()
if os.fork() == 0:
pid = os.fork()
if pid == 0:
# child process
try:
val = random.getrandbits(128)
with open(w, "w") as f:
f.write(str(val))
finally:
os._exit(0)
else:
# parent process
os.close(w)
val = random.getrandbits(128)
with open(r, "r") as f:
child_val = eval(f.read())
self.assertNotEqual(val, child_val)
pid, status = os.waitpid(pid, 0) self.assertEqual(status, 0)
if __name__ == "__main__": unittest.main()
pid, status = os.waitpid(pid, 0) self.assertEqual(status, 0)
if __name__ == "__main__": unittest.main()