[pypy-issue] Issue #1996: Segmentation fault when calling X509.load_request_string in pypy env (pypy/pypy)

jimhorng issues-reply at bitbucket.org
Wed Mar 11 12:19:29 CET 2015


New issue 1996: Segmentation fault when calling X509.load_request_string in pypy env
https://bitbucket.org/pypy/pypy/issue/1996/segmentation-fault-when-calling

jimhorng:

Originated from [SOF](http://stackoverflow.com/questions/28961005/segmentation-fault-when-calling-x509-load-request-string-in-pypy-env?noredirect=1#comment46211517_28961005)


Although in [pypy compatibility list][1] says the M2Crypto is supported,
but I got `segmentation fault` after run less than 100 times in a loop.
my code similar as below:

```
#!python
    TIMES = 1000
    
    def main():
        csr_b64 = 'MIICpjCCAY4CAQAwYTELMAkGA1UEBhMCVFcxETAPBgNVBAMMCHRlc3QuY29tMQ0wCwYDVQQHDAREYWFuMRAwDgYDVQQKDAd0ZXN0MTIzMQwwCgYDVQQIDANUUEUxEDAOBgNVBAsMB3Rlc3QxMjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9oICQhxQXBUEoPZZIvtlh5j+D7UeczK7MeVRXAlvw1s+ByhnFZsay8EtsV5DmhSl2w3y/qAIlZGdhqsCsNcK1RrE/eMXrrQ+pdRDZdrktqZUygniRD7kDRZRmqgh8+4eEz8sw1I52V/oW98M3yQBKN1gTCYO1bJiWG7PcM4b0fNqEkZQg6lwNyZo710dpu37kOHm1G0FFKtqTCmyYeuhRJVru/QWpvRaBnPZcxHlSfSv+ye0DKnJ0tQkBjL4PWsVOlPoJNp9gZJ0k9Xtfoj75ypa42LAp4HE61hpZw+TIjHW97tVxhrgL4LvjhPXYntGq0TrIold2/TfJ7reSf13BAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEARNeF8Kkn9pZC6pNuEnYfrtoh2HUJB9VX6nuTWnvJDSh9DG2we++Iaq6OQIVl5MBoamm4xdWYKE8UK9MZ5JvXGcXMrOoI4xAjvsdxMylFQ/bH3Fbv6DA4NOPsQidTEpEPLqslPXlTwV3dbL/+hBzjVtDsg/BeAOO4be2X9DdM+Du0tycROGfBVbObNW/+BpHhnyyr0qs6/wkdIE6ppjrCiv7HM1pZe/l8Po9Ej5z368y6tdL+4PCrVc/AnWiyLtp9QW6krqn/0vgReO7dbzrMB79FUBV1K9XxlWOZDpI2UcW8biOsrUJC3AQZwR0KIyi+YsVmoMHSxY2pfaRMjPT6kQ=='
    #     csr_b64 = 'abc'
    
        for i in xrange(TIMES):
            csr = convert_csr_b64_to_csr(csr_b64)
            domain_name = csr.get_subject().CN
            print("%s: domain_name: %s" % (i, domain_name))
    
        import time
        time.sleep(10)
    
    def convert_csr_b64_to_csr(csr_b64):
        from M2Crypto import X509
        import textwrap
        csr_pem = textwrap.fill(csr_b64, 64)
        csr_pem = ('-----BEGIN CERTIFICATE REQUEST-----\n' +
                   csr_pem +
                   '\n-----END CERTIFICATE REQUEST-----')
        csr = X509.load_request_string(csr_pem, X509.FORMAT_PEM)
        return csr
    
    if __name__ == "__main__":
        main()

```

dependencies tried:
* M2Crypto==0.22.3
* Mac OS X, pypy:2.4.0, SWIG:3.0.2
* Centos 6, pypy:2.3.1, SWIG:1.3.40
* Linux64, pypy:2.5.0

Thanks for any advise :)




More information about the pypy-issue mailing list