lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 07 Apr 2019 22:28:30 +0100 From: richard.purdie@...uxfoundation.org To: Eric Dumazet <edumazet@...gle.com> Cc: Neal Cardwell <ncardwell@...gle.com>, Yuchung Cheng <ycheng@...gle.com>, "David S. Miller" <davem@...emloft.net>, netdev@...r.kernel.org, Alexander Kanavin <alex.kanavin@...il.com>, Bruce Ashfield <bruce.ashfield@...il.com> Subject: Re: [PATCH net-next 2/3] tcp: implement coalescing on backlog queue Hi, I've been chasing down why a python test from the python3 testsuite started failing and it seems to point to this kernel change in the networking stack. In kernels beyond commit 4f693b55c3d2d2239b8a0094b518a1e533cf75d5 the test hangs about 90% of the time (I've reproduced with 5.1-rc3, 5.0.7, 5.0-rc1 but not 4.18, 4.19 or 4.20). The reproducer is: $ python3 -m test test_httplib -v == CPython 3.7.2 (default, Apr 5 2019, 15:17:15) [GCC 8.3.0] == Linux-5.0.0-yocto-standard-x86_64-with-glibc2.2.5 little-endian == cwd: /var/volatile/tmp/test_python_288 == CPU count: 1 == encodings: locale=UTF-8, FS=utf-8 [...] test_response_fileno (test.test_httplib.BasicTest) ... and it hangs in test_response_fileno. The test in question comes from Lib/test/test_httplib.py in the python source tree and the code is: def test_response_fileno(self): # Make sure fd returned by fileno is valid. serv = socket.socket( socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) self.addCleanup(serv.close) serv.bind((HOST, 0)) serv.listen() result = None def run_server(): [conn, address] = serv.accept() with conn, conn.makefile("rb") as reader: # Read the request header until a blank line while True: line = reader.readline() if not line.rstrip(b"\r\n"): break conn.sendall(b"HTTP/1.1 200 Connection established\r\n\r\n") nonlocal result result = reader.read() thread = threading.Thread(target=run_server) thread.start() self.addCleanup(thread.join, float(1)) conn = client.HTTPConnection(*serv.getsockname()) conn.request("CONNECT", "dummy:1234") response = conn.getresponse() try: self.assertEqual(response.status, client.OK) s = socket.socket(fileno=response.fileno()) try: s.sendall(b"proxied data\n") finally: s.detach() finally: response.close() conn.close() thread.join() self.assertEqual(result, b"proxied data\n") I was hoping someone with more understanding of the networking stack could look at this and tell whether its a bug in the python test, the kernel change or otherwise give a pointer to where the problem might be? I'll freely admit this is not an area I know much about. Cheers, Richard
Powered by blists - more mailing lists