Bug 1458282

Summary: fedmsg-tail segmentation fault
Product: [Fedora] Fedora Reporter: Viktor Ashirov <vashirov>
Component: python-m2extAssignee: Fedora Infrastructure SIG <infra-sig>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: urgent Docs Contact:
Priority: unspecified    
Version: 26CC: gholms, infra-sig, lewk, mitr, puiterwijk, randy, rbean, tmraz
Target Milestone: ---Keywords: Regression
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python-m2ext-0.1-12.fc26 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-09-22 18:50:40 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:

Description Viktor Ashirov 2017-06-02 13:13:45 UTC
Description of problem:
fedmsg-tail segfaults

Version-Release number of selected component (if applicable):
fedmsg-0.18.2-2.fc26.noarch
fedmsg-base-0.18.2-2.fc26.noarch
python2-fedmsg-commands-0.18.2-2.fc26.noarch
python2-fedmsg-consumers-0.18.2-2.fc26.noarch
python2-fedmsg-core-0.18.2-2.fc26.noarch


How reproducible:
always

Steps to Reproduce:
1. dnf install fedmsg
2. fedmsg-tail
3.

Actual results:
$ fedmsg-tail 
Segmentation fault (core dumped)


Expected results:
fedmsg-tail should be up and running

Additional info:

Comment 1 Viktor Ashirov 2017-06-02 13:15:48 UTC
{   "signal": 11
,   "executable": "/usr/bin/python2.7"
,   "stacktrace":
      [ {   "crash_thread": true
        ,   "frames":
              [ {   "address": 4294967296
                ,   "build_id_offset": 4294967296
                } ]
        }
      , {   "frames":
              [ {   "address": 140009942635379
                ,   "build_id": "3e4d91dbbc86381c7b9e9e13792bd9938281c798"
                ,   "build_id_offset": 1119091
                ,   "function_name": "epoll_wait"
                ,   "file_name": "/lib64/libc.so.6"
                }
              , {   "address": 140009746984554
                ,   "build_id": "35236b543ccbef838f30c407b7d95e4d24a49d10"
                ,   "build_id_offset": 118378
                ,   "function_name": "zmq::epoll_t::loop()"
                ,   "file_name": "/lib64/libzmq.so.5"
                }
              , {   "address": 140009747200346
                ,   "build_id": "35236b543ccbef838f30c407b7d95e4d24a49d10"
                ,   "build_id_offset": 334170
                ,   "function_name": "thread_routine"
                ,   "file_name": "/lib64/libzmq.so.5"
                }
              , {   "address": 140009953006445
                ,   "build_id": "bde992e593a39ff96f2839c656114e1aa3b6b248"
                ,   "build_id_offset": 29549
                ,   "function_name": "start_thread"
                ,   "file_name": "/lib64/libpthread.so.0"
                }
              , {   "address": 140009942633999
                ,   "build_id": "3e4d91dbbc86381c7b9e9e13792bd9938281c798"
                ,   "build_id_offset": 1117711
                ,   "function_name": "__clone"
                ,   "file_name": "/lib64/libc.so.6"
                } ]
        }
      , {   "frames":
              [ {   "address": 140009942635379
                ,   "build_id": "3e4d91dbbc86381c7b9e9e13792bd9938281c798"
                ,   "build_id_offset": 1119091
                ,   "function_name": "epoll_wait"
                ,   "file_name": "/lib64/libc.so.6"
                }
              , {   "address": 140009746984554
                ,   "build_id": "35236b543ccbef838f30c407b7d95e4d24a49d10"
                ,   "build_id_offset": 118378
                ,   "function_name": "zmq::epoll_t::loop()"
                ,   "file_name": "/lib64/libzmq.so.5"
                }
              , {   "address": 140009747200346
                ,   "build_id": "35236b543ccbef838f30c407b7d95e4d24a49d10"
                ,   "build_id_offset": 334170
                ,   "function_name": "thread_routine"
                ,   "file_name": "/lib64/libzmq.so.5"
                }
              , {   "address": 140009953006445
                ,   "build_id": "bde992e593a39ff96f2839c656114e1aa3b6b248"
                ,   "build_id_offset": 29549
                ,   "function_name": "start_thread"
                ,   "file_name": "/lib64/libpthread.so.0"
                }
              , {   "address": 140009942633999
                ,   "build_id": "3e4d91dbbc86381c7b9e9e13792bd9938281c798"
                ,   "build_id_offset": 1117711
                ,   "function_name": "__clone"
                ,   "file_name": "/lib64/libc.so.6"
                } ]
        } ]
}

Comment 2 Viktor Ashirov 2017-06-07 09:55:56 UTC
After downgrading python-m2ext to python-m2ext-0.1-9.fc25.x86_64.rpm fedmsg-tail works again. There was no change in the source, only rebuild for f26.

Here's the reproducer:

---------------8<---------------

import sys
from m2ext import SSL
from M2Crypto import X509

cert = X509.load_cert(sys.argv[1])
ctx = SSL.Context()
if not ctx.validate_certificate(cert):
    print("X509 certificate is not valid.")

---------------8<---------------

$ wget https://fedoraproject.org/fedmsg/ca.crt
--2017-06-07 11:54:03--  https://fedoraproject.org/fedmsg/ca.crt
Resolving fedoraproject.org (fedoraproject.org)... 140.211.169.196, 152.19.134.142, 140.211.169.206, ...
Connecting to fedoraproject.org (fedoraproject.org)|140.211.169.196|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1375 (1.3K)
Saving to: ‘ca.crt’

ca.crt                             100%[=============================================================>]   1.34K  --.-KB/s    in 0s      

2017-06-07 11:54:04 (33.4 MB/s) - ‘ca.crt’ saved [1375/1375]


~
$ python reproducer.py ca.crt 
[1]    20476 segmentation fault (core dumped)  python reproducer.py ca.crt

Comment 3 Viktor Ashirov 2017-06-07 10:20:45 UTC
Actually this might be coming from compat-openssl10

python-m2ext-0.1-10.fc26.x86_64.rpm
openssl-libs-1.1.0e-1.fc26.x86_64.rpm
openssl-1.1.0e-1.fc26.x86_64.rpm
compat-openssl10-1.0.2j-6.fc26.x86_64.rpm


#0  0x0000000100000000 in ?? ()
#1  0x00007fffee4e3c92 in X509_STORE_CTX_cleanup (ctx=ctx@entry=0x555555a1d300) at x509_vfy.c:2550
#2  0x00007fffee4e3d3e in X509_STORE_CTX_free (ctx=0x555555a1d300) at x509_vfy.c:2403
#3  0x00007fffeeaaea01 in _wrap_x509_store_ctx_free () from /usr/lib64/python2.7/site-packages/M2Crypto/__m2crypto.so
#4  0x00007ffff7b12a00 in call_function (oparg=<optimized out>, pp_stack=0x7fffffffcf98) at /usr/src/debug/Python-2.7.13/Python/ceval.c:4429
#5  PyEval_EvalFrameEx (f=f@entry=Frame 0x7fffec5bead0, for file /usr/lib64/python2.7/site-packages/M2Crypto/X509.py, line 876, in __del__ (self=<X509_Store_Context(ctx=<SwigPyObject at remote 0x7fffebbc6630>, _pyfree=1) at remote 0x7fffebbb1cf8>), throwflag=throwflag@entry=0) at /usr/src/debug/Python-2.7.13/Python/ceval.c:3063
#6  0x00007ffff7b132c8 in PyEval_EvalCodeEx (co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0) at /usr/src/debug/Python-2.7.13/Python/ceval.c:3661
#7  0x00007ffff7a5146e in function_call.lto_priv () from /lib64/libpython2.7.so.1.0
#8  0x00007ffff7a2b593 in PyObject_Call () from /lib64/libpython2.7.so.1.0
#9  0x00007ffff7a8f93e in instancemethod_call.lto_priv () from /lib64/libpython2.7.so.1.0
#10 0x00007ffff7a2b593 in PyObject_Call () from /lib64/libpython2.7.so.1.0
#11 0x00007ffff7b099e7 in PyEval_CallObjectWithKeywords (func=<instancemethod at remote 0x7fffebffcd20>, arg=(), kw=<optimized out>) at /usr/src/debug/Python-2.7.13/Python/ceval.c:4298
#12 0x00007ffff7a390db in instance_dealloc.lto_priv () from /lib64/libpython2.7.so.1.0
#13 0x00007ffff7a538d7 in frame_dealloc.lto_priv () from /lib64/libpython2.7.so.1.0
#14 0x00007ffff7b11fb5 in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>, pp_stack=0x7fffffffd588, func=<function at remote 0x7fffebbd3050>) at /usr/src/debug/Python-2.7.13/Python/ceval.c:4516
#15 call_function (oparg=<optimized out>, pp_stack=0x7fffffffd588) at /usr/src/debug/Python-2.7.13/Python/ceval.c:4449
#16 PyEval_EvalFrameEx (f=f@entry=Frame 0x7ffff7f65050, for file reproducer.py, line 7, in <module> (), throwflag=throwflag@entry=0) at /usr/src/debug/Python-2.7.13/Python/ceval.c:3063
#17 0x00007ffff7b132c8 in PyEval_EvalCodeEx (co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0) at /usr/src/debug/Python-2.7.13/Python/ceval.c:3661
#18 0x00007ffff7b134d9 in PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=<optimized out>) at /usr/src/debug/Python-2.7.13/Python/ceval.c:691
#19 0x00007ffff7adc3af in run_mod () from /lib64/libpython2.7.so.1.0
#20 0x00007ffff7addaea in PyRun_FileExFlags () from /lib64/libpython2.7.so.1.0
#21 0x00007ffff7addcae in PyRun_SimpleFileExFlags () from /lib64/libpython2.7.so.1.0
#22 0x00007ffff7ad665e in Py_Main () from /lib64/libpython2.7.so.1.0
#23 0x00007ffff6ca54da in __libc_start_main (main=0x555555554740 <main>, argc=3, argv=0x7fffffffd9c8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd9b8) at ../csu/libc-start.c:295
#24 0x000055555555477a in _start ()

Comment 4 Tomas Mraz 2017-06-07 11:21:41 UTC
The python-m2ext links to openssl-1.1.0 and m2crypto to openssl-1.0.2 - this is asking for disaster and compat-openssl10 package cannot be a magical fairy that can solve such disasters.

m2crypto has to be built against openssl-1.1.0

Comment 5 Tomas Mraz 2017-06-07 11:24:41 UTC
Or (if that's not possible yet) the python-m2ext against compat-openssl10.

Comment 6 Miloslav Trmač 2017-06-07 13:46:47 UTC
Yeah, M2Crypto does not support 1.1 yet (#1384010 ). So if m2ext is supposed to be an “extension” to M2Crypto it must use the same version.

Comment 7 Fedora Update System 2017-07-14 21:33:01 UTC
python-m2ext-0.1-12.fc26 has been submitted as an update to Fedora 26. https://bodhi.fedoraproject.org/updates/FEDORA-2017-74c491afb5

Comment 8 Patrick Uiterwijk 2017-07-14 21:34:33 UTC
I just found this bug independently and pushed a fixed build.

Comment 9 Fedora Update System 2017-07-16 21:21:51 UTC
python-m2ext-0.1-12.fc26 has been pushed to the Fedora 26 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-74c491afb5

Comment 10 Miloslav Trmač 2017-09-21 23:20:28 UTC
FWIW m2crypto-0.26.2-1.fc28 in rawhide (only) has just been built against OpenSSL-1.1 , so python-m2ext might need to be rebuilt again.

Comment 11 Tomas Mraz 2017-09-22 06:53:36 UTC
I've done the Rawhide rebuild of python-m2ext so it builds against openssl-1.1.

Comment 12 Fedora Update System 2017-09-22 18:50:40 UTC
python-m2ext-0.1-12.fc26 has been pushed to the Fedora 26 stable repository. If problems still persist, please make note of it in this bug report.