Commit bedd8f1d authored by Victor Stinner's avatar Victor Stinner

Issue #23680: Reduce risk of race condition in check_interrupted_write() of

test_io. Allocate the large data before scheduling an alarm in 1 second.

On very slow computer, the alarm rings sometimes during the memory allocation.
parent 0773a236
...@@ -3431,6 +3431,7 @@ class SignalsTest(unittest.TestCase): ...@@ -3431,6 +3431,7 @@ class SignalsTest(unittest.TestCase):
t.daemon = True t.daemon = True
r, w = os.pipe() r, w = os.pipe()
fdopen_kwargs["closefd"] = False fdopen_kwargs["closefd"] = False
large_data = item * (support.PIPE_MAX_SIZE // len(item) + 1)
try: try:
wio = self.io.open(w, **fdopen_kwargs) wio = self.io.open(w, **fdopen_kwargs)
t.start() t.start()
...@@ -3442,8 +3443,7 @@ class SignalsTest(unittest.TestCase): ...@@ -3442,8 +3443,7 @@ class SignalsTest(unittest.TestCase):
# handlers, which in this case will invoke alarm_interrupt(). # handlers, which in this case will invoke alarm_interrupt().
signal.alarm(1) signal.alarm(1)
try: try:
self.assertRaises(ZeroDivisionError, self.assertRaises(ZeroDivisionError, wio.write, large_data)
wio.write, item * (support.PIPE_MAX_SIZE // len(item) + 1))
finally: finally:
signal.alarm(0) signal.alarm(0)
t.join() t.join()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment