Skip to content

Commit 8a46a2e

Browse files
authored
gh-117657: Fix file descriptor race in test_socket.py (#123697)
1 parent 5a4fb7e commit 8a46a2e

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

Diff for: Lib/test/test_socket.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -4806,23 +4806,24 @@ def testInterruptedSendmsgTimeout(self):
48064806

48074807

48084808
class TCPCloserTest(ThreadedTCPSocketTest):
4809-
48104809
def testClose(self):
4811-
conn, addr = self.serv.accept()
4812-
conn.close()
4810+
conn, _ = self.serv.accept()
48134811

4814-
sd = self.cli
4815-
read, write, err = select.select([sd], [], [], 1.0)
4816-
self.assertEqual(read, [sd])
4817-
self.assertEqual(sd.recv(1), b'')
4812+
read, _, _ = select.select([conn], [], [], support.SHORT_TIMEOUT)
4813+
self.assertEqual(read, [conn])
4814+
self.assertEqual(conn.recv(1), b'x')
4815+
conn.close()
48184816

48194817
# Calling close() many times should be safe.
48204818
conn.close()
48214819
conn.close()
48224820

48234821
def _testClose(self):
48244822
self.cli.connect((HOST, self.port))
4825-
time.sleep(1.0)
4823+
self.cli.send(b'x')
4824+
read, _, _ = select.select([self.cli], [], [], support.SHORT_TIMEOUT)
4825+
self.assertEqual(read, [self.cli])
4826+
self.assertEqual(self.cli.recv(1), b'')
48264827

48274828

48284829
class BasicSocketPairTest(SocketPairTest):

Diff for: Tools/tsan/suppressions_free_threading.txt

-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ race:set_allocator_unlocked
1515
# These entries are for warnings that trigger in a library function, as called
1616
# by a CPython function.
1717

18-
# https://gist.github.com/swtaarrs/8e0e365e1d9cecece3269a2fb2f2b8b8
19-
race:sock_recv_impl
2018
# https://gist.github.com/swtaarrs/08dfe7883b4c975c31ecb39388987a67
2119
race:free_threadstate
2220

0 commit comments

Comments
 (0)