Index: include/lldb/Host/Socket.h =================================================================== --- include/lldb/Host/Socket.h +++ include/lldb/Host/Socket.h @@ -56,7 +56,12 @@ // Initialize a Tcp Socket object in listening mode. listen and accept are implemented // separately because the caller may wish to manipulate or query the socket after it is // initialized, but before entering a blocking accept. - static Error TcpListen(llvm::StringRef host_and_port, bool child_processes_inherit, Socket *&socket, Predicate* predicate); + static Error TcpListen( + llvm::StringRef host_and_port, + bool child_processes_inherit, + Socket *&socket, + Predicate* predicate, + int backlog = 5); static Error TcpConnect(llvm::StringRef host_and_port, bool child_processes_inherit, Socket *&socket); static Error UdpConnect(llvm::StringRef host_and_port, bool child_processes_inherit, Socket *&send_socket, Socket *&recv_socket); static Error UnixDomainConnect(llvm::StringRef host_and_port, bool child_processes_inherit, Socket *&socket); Index: source/Host/common/Socket.cpp =================================================================== --- source/Host/common/Socket.cpp +++ source/Host/common/Socket.cpp @@ -167,7 +167,12 @@ return error; } -Error Socket::TcpListen(llvm::StringRef host_and_port, bool child_processes_inherit, Socket *&socket, Predicate* predicate) +Error Socket::TcpListen( + llvm::StringRef host_and_port, + bool child_processes_inherit, + Socket *&socket, + Predicate* predicate, + int backlog) { std::unique_ptr listen_socket; NativeSocket listen_sock = kInvalidSocketValue; @@ -209,7 +214,7 @@ return error; } - err = ::listen (listen_sock, 1); + err = ::listen (listen_sock, backlog); if (err == -1) { // TODO: On Windows, use WSAGetLastError() Index: tools/lldb-server/lldb-platform.cpp =================================================================== --- tools/lldb-server/lldb-platform.cpp +++ tools/lldb-server/lldb-platform.cpp @@ -253,7 +253,12 @@ Socket *socket = nullptr; printf ("Listening for a connection from %s...\n", listen_host_port.c_str()); const bool children_inherit_listen_socket = false; - error = Socket::TcpListen(listen_host_port.c_str(), children_inherit_listen_socket, socket, NULL); + + // the test suite makes many connections in parallel, let's not miss any. + // The highest this should get reasonably is a function of the number + // of target CPUs. For now, let's just use 100 + const int backlog = 100; + error = Socket::TcpListen(listen_host_port.c_str(), children_inherit_listen_socket, socket, NULL, backlog); if (error.Fail()) { printf("error: %s\n", error.AsCString());