Subject: bug#35311: Python 2 test failures: test_httplib test_urllib2_localnet

From: Maxim Cournoyer <[email-masked]>
Date: Wed, 17 Apr 2019 21:49:12 -0400

Building 'python2' on the core-updates branch, I've seen these two test
failures (non-deterministic), although the first one comes up quite
steadily on my system:

--8<---------------cut here---------------start------------->8---
;; This buffer is for text that is not saved, and for Lisp evaluation.
;; To create a file, visit it with C-x C-f and enter text in its buffer.

test test_urllib2_localnet produced unexpected output:
**********************************************************************
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 35092)
----------------------------------------

**********************************************************************
Traceback (most recent call last):
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/SocketServer.py", linek
    self.process_request(request, client_address)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/SocketServer.py", linet
    self.finish_request(request, client_address)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/SocketServer.py", linet
    self.RequestHandlerClass(request, client_address, self)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/SocketServer.py", line_
    self.handle()
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/BaseHTTPServer.py", lie
    self.handle_one_request()
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/BaseHTTPServer.py", lit
    self.raw_requestline = self.rfile.readline(65537)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/socket.py", line 480, e
    data = self._sock.recv(self._rbufsize)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/ssl.py", line 754, in v
    return self.read(buflen)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/ssl.py", line 641, in d
    v = self._sslobj.read(len)
error: [Errno 104] Connection reset by peer

# This one is much harder to get:

test test_httplib produced unexpected output:
**********************************************************************
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 60648)
----------------------------------------

**********************************************************************
Traceback (most recent call last):
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/SocketServer.py", linek
    self.process_request(request, client_address)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/SocketServer.py", linet
    self.finish_request(request, client_address)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/SocketServer.py", linet
    self.RequestHandlerClass(request, client_address, self)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/SocketServer.py", line_
    self.handle()
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/BaseHTTPServer.py", lie
    self.handle_one_request()
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/BaseHTTPServer.py", lit
    self.raw_requestline = self.rfile.readline(65537)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/socket.py", line 480, e
    data = self._sock.recv(self._rbufsize)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/ssl.py", line 754, in v
    return self.read(buflen)
  File "/tmp/guix-build-python2-2.7.16.drv-0/Python-2.7.16/Lib/ssl.py", line 641, in d
    v = self._sslobj.read(len)
error: [Errno 104] Connection reset by peer
--8<---------------cut here---------------end--------------->8---

It seems to be related to OpenSSL bump to 1.1.1b, although strangely
Python 3 seems unaffected.  It is potentially fixed by:
https://github.com/python/cpython/commit/529525fb5a8fd9b96ab4021311a598c77588b918,
but hasn't been backported to Python 2 as of 2019/04/17.

Maxim