From f3099f1288d098b49ff50601fe8a0f036d8497dd Mon Sep 17 00:00:00 2001 From: Nicolas Lacasse Date: Tue, 14 Feb 2023 13:30:06 -0800 Subject: [PATCH] Fix data race in syscalls:socket_ip_tcp_generic_loopback_test_native Can't read/write to the same buffer in concurrent threads. PiperOrigin-RevId: 509622769 --- test/syscalls/linux/socket_ip_tcp_generic.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/syscalls/linux/socket_ip_tcp_generic.cc b/test/syscalls/linux/socket_ip_tcp_generic.cc index ef8d02300..87c0105c4 100644 --- a/test/syscalls/linux/socket_ip_tcp_generic.cc +++ b/test/syscalls/linux/socket_ip_tcp_generic.cc @@ -289,15 +289,16 @@ TEST_P(TCPSocketPairTest, ShutdownRdAllowsReadOfReceivedDataBeforeEOF) { // response. TEST_P(TCPSocketPairTest, ShutdownWrServerClientClose) { auto sockets = ASSERT_NO_ERRNO_AND_VALUE(NewSocketPair()); - char buf[10] = {}; ScopedThread t([&]() { - ASSERT_THAT(RetryEINTR(read)(sockets->first_fd(), buf, sizeof(buf)), - SyscallSucceedsWithValue(sizeof(buf))); - ASSERT_THAT(RetryEINTR(write)(sockets->first_fd(), buf, sizeof(buf)), - SyscallSucceedsWithValue(sizeof(buf))); + char sbuf[10] = {}; + ASSERT_THAT(RetryEINTR(read)(sockets->first_fd(), sbuf, sizeof(sbuf)), + SyscallSucceedsWithValue(sizeof(sbuf))); + ASSERT_THAT(RetryEINTR(write)(sockets->first_fd(), sbuf, sizeof(sbuf)), + SyscallSucceedsWithValue(sizeof(sbuf))); ASSERT_THAT(close(sockets->release_first_fd()), SyscallSucceedsWithValue(0)); }); + char buf[10] = {}; ASSERT_THAT(RetryEINTR(write)(sockets->second_fd(), buf, sizeof(buf)), SyscallSucceedsWithValue(sizeof(buf))); ASSERT_THAT(RetryEINTR(shutdown)(sockets->second_fd(), SHUT_WR),