From 8a46a2ec5032c5eb1bc3c6bb0fc2422ac9b2cc53 Mon Sep 17 00:00:00 2001 From: Nadeshiko Manju Date: Sat, 7 Sep 2024 03:00:28 +0800 Subject: [PATCH] gh-117657: Fix file descriptor race in test_socket.py (#123697) --- Lib/test/test_socket.py | 17 +++++++++-------- Tools/tsan/suppressions_free_threading.txt | 2 -- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 628f806c789..e449fa65ace 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -4806,15 +4806,13 @@ class InterruptedSendTimeoutTest(InterruptedTimeoutBase, class TCPCloserTest(ThreadedTCPSocketTest): - def testClose(self): - conn, addr = self.serv.accept() - conn.close() + conn, _ = self.serv.accept() - sd = self.cli - read, write, err = select.select([sd], [], [], 1.0) - self.assertEqual(read, [sd]) - self.assertEqual(sd.recv(1), b'') + read, _, _ = select.select([conn], [], [], support.SHORT_TIMEOUT) + self.assertEqual(read, [conn]) + self.assertEqual(conn.recv(1), b'x') + conn.close() # Calling close() many times should be safe. conn.close() @@ -4822,7 +4820,10 @@ class TCPCloserTest(ThreadedTCPSocketTest): def _testClose(self): self.cli.connect((HOST, self.port)) - time.sleep(1.0) + self.cli.send(b'x') + read, _, _ = select.select([self.cli], [], [], support.SHORT_TIMEOUT) + self.assertEqual(read, [self.cli]) + self.assertEqual(self.cli.recv(1), b'') class BasicSocketPairTest(SocketPairTest): diff --git a/Tools/tsan/suppressions_free_threading.txt b/Tools/tsan/suppressions_free_threading.txt index 78449aed400..e5eb665ae21 100644 --- a/Tools/tsan/suppressions_free_threading.txt +++ b/Tools/tsan/suppressions_free_threading.txt @@ -15,8 +15,6 @@ race:set_allocator_unlocked # These entries are for warnings that trigger in a library function, as called # by a CPython function. -# https://gist.github.com/swtaarrs/8e0e365e1d9cecece3269a2fb2f2b8b8 -race:sock_recv_impl # https://gist.github.com/swtaarrs/08dfe7883b4c975c31ecb39388987a67 race:free_threadstate