Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.

Bug 1859556

Summary: python3.5 FTBFS: hangs in test_ftplib
Product: [Fedora] Fedora Reporter: Petr Viktorin <pviktori>
Component: python3.5Assignee: Miro Hrončok <mhroncok>
Status: CLOSED WONTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 33CC: cstratak, mhroncok, python-sig, thrnciar, torsava, vstinner
Target Milestone: ---Keywords: Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python3.5-3.5.9-9.fc33 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-09-02 12:14:37 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1803234    

Description Petr Viktorin 2020-07-22 13:04:26 UTC
Building python3.5 fails in the PGO run (or in test suite --without optimizations).




gdb backtrace:

#0  0x00007f0ac7d37bbc in read () from target:/lib64/libc.so.6
#1  0x00007f0ac72114b9 in sock_read () from target:/lib64/libcrypto.so.1.1
#2  0x00007f0ac720abde in bread_conv () from target:/lib64/libcrypto.so.1.1
#3  0x00007f0ac7209a34 in bio_read_intern () from target:/lib64/libcrypto.so.1.1
#4  0x00007f0ac720a007 in BIO_read () from target:/lib64/libcrypto.so.1.1
#5  0x00007f0ac6c6c021 in ssl3_read_n () from target:/lib64/libssl.so.1.1
#6  0x00007f0ac6c702a6 in ssl3_get_record () from target:/lib64/libssl.so.1.1
#7  0x00007f0ac6c6db78 in ssl3_read_bytes () from target:/lib64/libssl.so.1.1
#8  0x00007f0ac6ca1d41 in tls_get_message_header () from target:/lib64/libssl.so.1.1
#9  0x00007f0ac6c9739d in state_machine.part () from target:/lib64/libssl.so.1.1
#10 0x00007f0ac7834092 in _ssl__SSLSocket_do_handshake_impl (self=0x7f0ab44180c0) at /builddir/build/BUILD/Python-3.5.9/Modules/_ssl.c:692
#11 _ssl__SSLSocket_do_handshake (self=self@entry=0x7f0ab44180c0, _unused_ignored=_unused_ignored@entry=0x0) at /builddir/build/BUILD/Python-3.5.9/Modules/clinic/_ssl.c.h:19
#12 0x00007f0ac809b15d in call_function (oparg=<optimized out>, pp_stack=0x7ffca1db8830) at /builddir/build/BUILD/Python-3.5.9/Python/ceval.c:4766
#13 PyEval_EvalFrameEx (f=f@entry=0x7f0ab79a4048, throwflag=throwflag@entry=0) at /builddir/build/BUILD/Python-3.5.9/Python/ceval.c:3313
#14 0x00007f0ac809b842 in fast_function (nk=<optimized out>, na=<optimized out>, n=1, pp_stack=0x7ffca1db8960, func=0x7f0ac76abc80) at /builddir/build/BUILD/Python-3.5.9/Python/ceval.c:4885
#15 call_function (oparg=<optimized out>, pp_stack=0x7ffca1db8960) at /builddir/build/BUILD/Python-3.5.9/Python/ceval.c:4812
#16 PyEval_EvalFrameEx (f=f@entry=0x55b653ab5678, throwflag=throwflag@entry=0) at /builddir/build/BUILD/Python-3.5.9/Python/ceval.c:3313


Python traceback after Ctrl+C:

Exception in thread Thread-367:
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asyncore.py", line 83, in read
    obj.handle_read_event()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 364, in handle_read_event
    super(SSLConnection, self).handle_read_event()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asyncore.py", line 423, in handle_read_event
    self.handle_read()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asynchat.py", line 171, in handle_read
    self.found_terminator()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 116, in found_terminator
    method(arg)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 429, in cmd_auth
    self.secure_connection()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 317, in secure_connection
    ssl_version=ssl.PROTOCOL_SSLv23)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/ssl.py", line 1077, in wrap_socket
    ciphers=ciphers)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/ssl.py", line 699, in __init__
    self._context.load_cert_chain(certfile, keyfile)
ssl.SSLError: [SSL: EE_KEY_TOO_SMALL] ee key too small (_ssl.c:2951)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.5.9/Lib/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 279, in run
    asyncore.loop(timeout=0.1, count=1)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asyncore.py", line 207, in loop
    poll_fun(timeout, map)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asyncore.py", line 150, in poll
    read(obj)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asyncore.py", line 87, in read
    obj.handle_error()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 397, in handle_error
    raise Exception
Exception


[Exceptions in thread Thread-368 through Thread-407 are the same as above]


Exception in thread Thread-408:
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asyncore.py", line 83, in read
    obj.handle_read_event()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 364, in handle_read_event
    super(SSLConnection, self).handle_read_event()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asyncore.py", line 423, in handle_read_event
    self.handle_read()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asynchat.py", line 171, in handle_read
    self.found_terminator()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 116, in found_terminator
    method(arg)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 143, in cmd_pasv
    self.dtp = self.dtp_handler(conn, baseclass=self)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 413, in __init__
    self.secure_connection()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 317, in secure_connection
    ssl_version=ssl.PROTOCOL_SSLv23)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/ssl.py", line 1077, in wrap_socket
    ciphers=ciphers)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/ssl.py", line 699, in __init__
    self._context.load_cert_chain(certfile, keyfile)
ssl.SSLError: [SSL: EE_KEY_TOO_SMALL] ee key too small (_ssl.c:2951)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.5.9/Lib/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 279, in run
    asyncore.loop(timeout=0.1, count=1)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asyncore.py", line 207, in loop
    poll_fun(timeout, map)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asyncore.py", line 150, in poll
    read(obj)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/asyncore.py", line 87, in read
    obj.handle_error()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_ftplib.py", line 397, in handle_error
    raise Exception
Exception

Exception in thread Thread-409: [same]
--- Logging error ---
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.5.9/Lib/smtplib.py", line 387, in getreply
    line = self.file.readline(_MAXLINE + 1)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/socket.py", line 576, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.5.9/Lib/logging/handlers.py", line 998, in emit
    smtp = smtplib.SMTP(self.mailhost, port, timeout=self.timeout)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/smtplib.py", line 338, in connect
    (code, msg) = self.getreply()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/smtplib.py", line 391, in getreply
    + str(e))
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: timed out
Call stack:
  File "/builddir/build/BUILD/Python-3.5.9/Lib/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/regrtest.py", line 1833, in <module>
    main_in_temp_cwd()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/regrtest.py", line 1808, in main_in_temp_cwd
    main()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/regrtest.py", line 873, in main
    runtest_accumulate()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/regrtest.py", line 863, in runtest_accumulate
    match_tests=ns.match_tests, pgo=ns.pgo)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/regrtest.py", line 1108, in runtest
    pgo=pgo)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/regrtest.py", line 1403, in runtest_inner
    test_runner()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/support/__init__.py", line 1565, in inner
    return func(*args, **kwds)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_logging.py", line 4298, in test_main
    support.run_unittest(*tests)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/support/__init__.py", line 1901, in run_unittest
    _run_suite(suite)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/support/__init__.py", line 1857, in _run_suite
    result = runner.run(suite)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/support/__init__.py", line 1740, in run
    test(result)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/unittest/suite.py", line 122, in run
    test(result)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/unittest/suite.py", line 122, in run
    test(result)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/unittest/case.py", line 670, in __call__
    return self.run(*args, **kwds)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/unittest/case.py", line 622, in run
    testMethod()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_logging.py", line 943, in test_basic
    h.handle(r)
Message: 'Hello \u2713'
Arguments: ()
Exception in thread Thread-650:
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.5.9/Lib/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/builddir/build/BUILD/Python-3.5.9/Lib/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/test/test_nntplib.py", line 1553, in run_server
    client, server_side=True, certfile=certfile)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/ssl.py", line 1077, in wrap_socket
    ciphers=ciphers)
  File "/builddir/build/BUILD/Python-3.5.9/Lib/ssl.py", line 699, in __init__
    self._context.load_cert_chain(certfile, keyfile)
ssl.SSLError: [SSL: EE_KEY_TOO_SMALL] ee key too small (_ssl.c:2951)

Comment 1 Ben Cotton 2020-08-11 13:48:41 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 33 development cycle.
Changing version to 33.

Comment 2 Fedora Update System 2020-08-22 09:51:41 UTC
FEDORA-2020-c3e2a83528 has been pushed to the Fedora 33 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 3 Miro Hrončok 2020-08-22 09:57:19 UTC
3.5.10rc1 has been released and it does not fix the problem:

https://mail.python.org/archives/list/python-dev@python.org/thread/3Z6X4LPSNRHHW4QPLLAVSNYY6CS6DDNR/

In the meantime, I've managed to build the package in a side tag with openssh-8.3p1-1.fc33, crypto-policies-20200312-1.git3ae59d2.fc33 and openssl-1.1.1g-1.fc33.

Comment 4 Petr Viktorin 2020-09-02 12:14:37 UTC
The package builds now, with several tests skipped: https://src.fedoraproject.org/rpms/python3.5/c/467b6a3697ae91f2f5163f5a8d0dc4b42d92b6d3?branch=master

See the message Miro linked above. Basically, SSL may not work on newer distros. We're providing the upstream Python 3.5 experience, which is unfortunately broken.

Comment 5 Miro Hrončok 2020-09-16 08:37:48 UTC
Alternate approach: https://src.fedoraproject.org/rpms/python3.5/pull-request/12