]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-117657: Fix file descriptor race in test_socket.py (#123697)
authorNadeshiko Manju <me@manjusaka.me>
Fri, 6 Sep 2024 19:00:28 +0000 (03:00 +0800)
committerGitHub <noreply@github.com>
Fri, 6 Sep 2024 19:00:28 +0000 (15:00 -0400)
Lib/test/test_socket.py
Tools/tsan/suppressions_free_threading.txt

index 628f806c78959d0b62cfca5b31fb6d8338b43a7c..e449fa65aceff97ba3cdfe6202cc7fda24e4ada9 100644 (file)
@@ -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):
index 78449aed4009d3c3fee7535b7d6ce83bc4ca5b47..e5eb665ae212de5a9e7a11b7d353c0690d06235f 100644 (file)
@@ -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