Bug 1594248

Summary: python-eventlet FTBFS in Python 3.7
Product: [Fedora] Fedora Reporter: Miro Hrončok <mhroncok>
Component: python-eventletAssignee: Kevin Fenzi <kevin>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: urgent    
Version: rawhideCC: apevec, ignatenko, kevin, shamardin, vstinner
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python-eventlet-0.23.0-1.fc29 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-07-17 12:22:43 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: 1565020, 1575434    

Description Miro Hrončok 2018-06-22 12:49:21 UTC
Description of problem: A build of python-eventlet in the Python 3.7 side tag hangs.


Version-Release number of selected component (if applicable): python-eventlet-0.23.0-1.fc29 (but also 0.23.0). Sometimes it segfaults instead.


How reproducible: fedpkg build --target=f29-python 

https://koji.fedoraproject.org/koji/taskinfo?taskID=27780937
https://koji.fedoraproject.org/koji/taskinfo?taskID=27780927
https://koji.fedoraproject.org/koji/taskinfo?taskID=27780641
https://koji.fedoraproject.org/koji/taskinfo?taskID=27780453
https://koji.fedoraproject.org/koji/taskinfo?taskID=27719088

This blocks other packages.

$ dnf repoquery  --disablerepo='*' --enablerepo='rawhide-source' --whatrequires python3-eventlet
python-cassandra-driver-0:3.14.0-1.fc29.src
python-detox-0:0.12-2.fc29.src
python-os-win-0:2.2.0-4.fc29.src
python-oslo-concurrency-0:3.25.0-1.fc28.src
python-oslo-privsep-0:1.13.0-5.fc29.src
python-oslo-reports-0:1.17.0-3.fc28.src
python-oslo-rootwrap-0:5.13.0-1.fc28.src
python-oslo-versionedobjects-0:1.21.0-3.fc28.src
python-ryu-0:4.15-1.fc27.src

Comment 1 Miro Hrončok 2018-06-28 22:54:07 UTC
Bump.

Comment 2 Kevin Fenzi 2018-06-28 23:55:15 UTC
This seems to be: 

https://github.com/eventlet/eventlet/issues/475

upstream. Sounds like they might need some resources to test with python 3.7? 
Or perhaps they have it now that it's released... 

The test it hangs in (and uses 100% cpu until stopped) is: 

def test_wait_each_exc():
    pool = DAGPool()
    pool.spawn("a", (), raiser, BogusError("bogus"))
    with assert_raises(PropagateError):
        for k, v in pool.wait_each("a"):
            pass

    with assert_raises(PropagateError):
        for k, v in pool.wait_each():
            pass


and the test after it. 

If I comment out those two tests I next hit: 

test_accept_deflate_ext_context_takeover_13 (tests.websocket_new_test.TestWebSocketWithCompression) ... /var/tmp/rpm-tmp.mxJJ4m: line 34: 11070 Segmentation fault      (core dumped) nosetests-3.7 -v

So, seems like there is definitely some upstream work here. ;(

Comment 3 Kevin Fenzi 2018-06-29 00:00:52 UTC
The core dump has: 

             Stack trace of thread 11070:
                #0  0x00007fffbca51654 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #1  0x00007fffbca51524 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #2  0x00007fffbca516cc n/a (/usr/lib64/libpython3.7m.so.1.0)
                #3  0x00007fffbcb7cb04 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #4  0x00007fffbc9d28dc n/a (/usr/lib64/libpython3.7m.so.1.0)
                #5  0x00007fffbca130d4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #6  0x00007fffbcb7c668 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #7  0x00007fffbca4386c n/a (/usr/lib64/libpython3.7m.so.1.0)
                #8  0x00007fffbca771a8 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #9  0x00007fffbca77324 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #10 0x00007fffbc9da184 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #11 0x00007fffbca130d4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #12 0x00007fffbcae4d6c n/a (/usr/lib64/libpython3.7m.so.1.0)
                #13 0x00007fffbcae502c n/a (/usr/lib64/libpython3.7m.so.1.0)
                #14 0x00007fffbc9d9f18 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #15 0x00007fffbca130d4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #16 0x00007fffbcae4d6c n/a (/usr/lib64/libpython3.7m.so.1.0)
                #17 0x00007fffbcae5a38 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #18 0x00007fffbcae5db4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #19 0x00007fffbcae6110 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #20 0x00007fffbcae6198 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #21 0x00007fffbca50fc0 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #22 0x00007fffbc9d2548 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #23 0x00007fffbca130d4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #24 0x00007fffbcae4d6c n/a (/usr/lib64/libpython3.7m.so.1.0)
                #25 0x00007fffbcae5a38 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #26 0x00007fffbcae5db4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #27 0x00007fffbcae6110 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #28 0x00007fffbcb30490 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #29 0x00007fffbcae52f8 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #30 0x00007fffbc9d4cec n/a (/usr/lib64/libpython3.7m.so.1.0)
                #31 0x00007fffbca130d4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #32 0x00007fffbc9d0ee4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #33 0x00007fffbc9dafbc n/a (/usr/lib64/libpython3.7m.so.1.0)
                #34 0x00007fffbca130d4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #35 0x00007fffbc9d0ee4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #36 0x00007fffbcae5b80 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #37 0x00007fffbcae5db4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #38 0x00007fffbcae6110 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #39 0x00007fffbcae6198 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #40 0x00007fffbca50fc0 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #41 0x00007fffbc9d2548 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #42 0x00007fffbca130d4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #43 0x00007fffbcae4d6c n/a (/usr/lib64/libpython3.7m.so.1.0)
                #44 0x00007fffbcae5a38 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #45 0x00007fffbcae5db4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #46 0x00007fffbcae6110 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #47 0x00007fffbcb30490 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #48 0x00007fffbcae52f8 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #49 0x00007fffbc9d4cec n/a (/usr/lib64/libpython3.7m.so.1.0)
                #50 0x00007fffbca130d4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #51 0x00007fffbc9d0ee4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #52 0x00007fffbcae5b80 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #53 0x00007fffbcae5db4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #54 0x00007fffbcae6110 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #55 0x00007fffbcae6198 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #56 0x00007fffbca50fc0 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #57 0x00007fffbc9d2548 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #58 0x00007fffbca130d4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #59 0x00007fffbcae4d6c n/a (/usr/lib64/libpython3.7m.so.1.0)
                #60 0x00007fffbcae5a38 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #61 0x00007fffbcae5db4 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #62 0x00007fffbcae6110 n/a (/usr/lib64/libpython3.7m.so.1.0)
                #63 0x00007fffbcb30490 n/a (/usr/lib64/libpython3.7m.so.1.0)

Comment 4 Victor Stinner 2018-06-29 12:43:31 UTC
I created a "short" (700 lines) reproducer script which only depends on greenlet (no longer on eventlet). I reported the crash in Python, IMHO it's a regression of Python 3.7.0: https://bugs.python.org/issue33996

Comment 5 Miro Hrončok 2018-07-02 18:19:14 UTC
The side tag is no more. Once fixed, build in regular rawhide.

Comment 6 Victor Stinner 2018-07-03 15:38:44 UTC
The bug is in greenlet, not in eventlet:

* greenlet bug: https://github.com/python-greenlet/greenlet/issues/131
* my greenlet fix: https://github.com/python-greenlet/greenlet/pull/132

See also:

* eventlet bug: https://github.com/eventlet/eventlet/issues/475
* Python bug: https://bugs.python.org/issue33996 (closed)

Comment 7 Miro Hrončok 2018-07-03 16:56:24 UTC
Greenlet fix is there, however see https://github.com/eventlet/eventlet/issues/475 for more issues.

Comment 8 Miro Hrončok 2018-07-12 13:42:48 UTC
I've built it with https://github.com/eventlet/eventlet/pull/506 because I'm desperate. We can later replace the patch with what get's merged to upstream.