Package: osc Version: 0.162.1-1 Severity: grave Justification: osc tool becomes mostly unusable
This is probably a bug in libssl1.1 or in python-m2crypto, but I'm reporting it against osc for now, because that's the only place I know how to reproduce it at the moment. X-Debbugs-Cc'd to the lower-level packages' maintainers. Steps to reproduce: * have an account on any OBS instance (I used <https://build.opensuse.org/>: anyone can register there, but an account is required to use the API) * be in a temporary directory * rm -fr binaries * osc -A https://api.opensuse.org getbinaries openSUSE:Leap:15.0 \ hello standard x86_64 (or some project/package combination that exists on your OBS) Expected result: osc downloads hello into ./binaries Actual result: osc usually segfaults in glibc malloc-related functions, probably due to memory corruption; sometimes glibc detects the memory corruption itself and aborts instead. Workaround: Downgrading libssl1.1 to 1.1.0f-3+deb9u2 from stable-security makes osc work correctly, so presumably this is a behaviour change between 1.1.0f and 1.1.0h, either a regression or something that triggers a pre-existing bug in python-m2crypto (or possibly osc). Other file-downloading operations like `osc co` have a similar crash. Perhaps notably, `osc ls` does not. Backtrace for memory corruption detected by glibc (with MALLOC_CHECK_=2): #0 0x00007fa978092e7b in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 #1 0x00007fa978094231 in __GI_abort () at abort.c:79 #2 0x00007fa9780d57b7 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7fa9781de0f3 "%s\n") at ../sysdeps/posix/libc_fatal.c:181 #3 0x00007fa9780dbd5a in malloc_printerr (str=str@entry=0x7fa9781dc2fe "free(): invalid pointer") at malloc.c:5350 #4 0x00007fa9780dfc0e in free_check (mem=<optimized out>, caller=<optimized out>) at hooks.c:274 #5 0x00007fa9774999a9 in SSL_SESSION_free (ss=0x5561d9428070) at ../ssl/ssl_sess.c:780 #6 0x00007fa977499daf in ssl_get_new_session (s=s@entry=0x5561d9430d60, session=session@entry=0) at ../ssl/ssl_sess.c:315 #7 0x00007fa97749e05a in tls_construct_client_hello (s=0x5561d9430d60) at ../ssl/statem/statem_clnt.c:705 #8 0x00007fa97749c556 in write_state_machine (s=0x5561d9430d60) at ../ssl/statem/statem.c:773 #9 0x00007fa97749c556 in state_machine (s=0x5561d9430d60, server=0) at ../ssl/statem/statem.c:404 #10 0x00007fa977494c91 in SSL_do_handshake (s=0x5561d9430d60) at ../ssl/ssl_lib.c:3220 #11 0x00007fa96e0cb0f2 in ssl_connect (ssl=ssl@entry=0x5561d9430d60, timeout=-1) at SWIG/_m2crypto_wrap.c:8255 #12 0x00007fa96e0cb20b in _wrap_ssl_connect (self=<optimized out>, args=<optimized out>) at SWIG/_m2crypto_wrap.c:21441 #13 0x00005561d73e4e5a in call_function (oparg=<optimized out>, pp_stack=0x7ffcd796bcd0) at ../Python/ceval.c:4372 #14 0x00005561d73e4e5a in PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3009 #15 0x00005561d73e241a in PyEval_EvalCodeEx (co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kws=<optimized out>, kwcount=0, defs=0x0, defcount=0, closure=0x0) at ../Python/ceval.c:3604 #16 0x00005561d73ea661 in fast_function (nk=0, na=<optimized out>, n=<optimized out>, pp_stack=0x7ffcd796beb0, func=<optimized out>) at ../Python/ceval.c:4467 Backtrace for a segfault: Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007f34e77351c8 in _int_malloc (av=av@entry=0x7f34e7a68c40 <main_arena>, bytes=bytes@entry=32) at malloc.c:4028 #1 0x00007f34e773659c in __GI___libc_malloc (bytes=32) at malloc.c:3057 #2 0x00007f34e6795469 in CRYPTO_zalloc (num=32, file=file@entry=0x7f34e6816be0 "../crypto/asn1/tasn_new.c", line=line@entry=122) at ../crypto/mem.c:107 #3 0x00007f34e66ce817 in asn1_item_embed_new (pval=pval@entry=0x7ffc4a4b75e0, it=it@entry=0x7f34e6a9ef40 <DIST_POINT_it>, embed=embed@entry=0) at ../crypto/asn1/tasn_new.c:122 #4 0x00007f34e66cea97 in ASN1_item_ex_new (pval=pval@entry=0x7ffc4a4b75e0, it=it@entry=0x7f34e6a9ef40 <DIST_POINT_it>) at ../crypto/asn1/tasn_new.c:39 #5 0x00007f34e66cc291 in asn1_item_embed_d2i (pval=pval@entry=0x7ffc4a4b75e0, in=in@entry=0x7ffc4a4b75d8, len=<optimized out>, it=0x7f34e6a9ef40 <DIST_POINT_it>, tag=<optimized out>, tag@entry=-1, aclass=<optimized out>, aclass@entry=0, opt=0 '\000', ctx=0x7ffc4a4b77e0, depth=2) at ../crypto/asn1/tasn_dec.c:305 #6 0x00007f34e66cc9a8 in asn1_template_noexp_d2i (val=0x7ffc4a4b77d8, in=0x7ffc4a4b7820, len=<optimized out>, tt=tt@entry=0x7f34e6aa71e0 <CRL_DIST_POINTS_item_tt>, opt=<optimized out>, ctx=0x7ffc4a4b77e0, depth=1) at ../crypto/asn1/tasn_dec.c:591 #7 0x00007f34e66cccc9 in asn1_template_ex_d2i (val=val@entry=0x7ffc4a4b77d8, in=in@entry=0x7ffc4a4b7820, inlen=<optimized out>, tt=0x7f34e6aa71e0 <CRL_DIST_POINTS_item_tt>, opt=opt@entry=0 '\000', ctx=ctx@entry=0x7ffc4a4b77e0, depth=1) at ../crypto/asn1/tasn_dec.c:498 #8 0x00007f34e66cc251 in asn1_item_embed_d2i (pval=pval@entry=0x7ffc4a4b77d8, in=0x7ffc4a4b7820, len=<optimized out>, it=it@entry=0x7f34e6a9ef00 <CRL_DIST_POINTS_it>, tag=tag@entry=-1, aclass=aclass@entry=0, opt=0 '\000', ctx=0x7ffc4a4b77e0, depth=1) at ../crypto/asn1/tasn_dec.c:177 #9 0x00007f34e66cce0d in ASN1_item_ex_d2i (pval=pval@entry=0x7ffc4a4b77d8, in=<optimized out>, len=<optimized out>, it=0x7f34e6a9ef00 <CRL_DIST_POINTS_it>, tag=tag@entry=-1, aclass=aclass@entry=0, opt=0 '\000', ctx=0x7ffc4a4b77e0) at ../crypto/asn1/tasn_dec.c:123 #10 0x00007f34e66cce8b in ASN1_item_d2i (pval=0x7ffc4a4b77d8, in=<optimized out>, len=<optimized out>, it=<optimized out>) at ../crypto/asn1/tasn_dec.c:113 #11 0x00007f34e680d885 in X509V3_EXT_d2i (ext=<optimized out>) at ../crypto/x509v3/v3_lib.c:210 #12 0x00007f34e680d94f in X509V3_get_d2i (x=<optimized out>, nid=nid@entry=103, crit=0x385372041cc40d00, crit@entry=0x0, idx=idx@entry=0x0) at ../crypto/x509v3/v3_lib.c:269 #13 0x00007f34e67f52c9 in X509_get_ext_d2i (x=x@entry=0x55e18e619390, nid=nid@entry=103, crit=crit@entry=0x0, idx=idx@entry=0x0) at ../crypto/x509/x509_ext.c:105 #14 0x00007f34e6810c12 in setup_crldp (x=0x55e18e619390) at ../crypto/x509v3/v3_purp.c:334 #15 0x00007f34e6810c12 in x509v3_cache_extensions (x=x@entry=0x55e18e619390) at ../crypto/x509v3/v3_purp.c:472 #16 0x00007f34e6811188 in x509v3_cache_extensions (x=0x55e18e619390) at ../crypto/x509v3/v3_purp.c:765 #17 0x00007f34e6811188 in X509_check_issued (issuer=issuer@entry=0x55e18e619390, subject=subject@entry=0x55e18de7c030) at ../crypto/x509v3/v3_purp.c:762 #18 0x00007f34e67f89a4 in check_issued (ctx=0x55e18dc82960, x=0x55e18de7c030, issuer=0x55e18e619390) at ../crypto/x509/x509_vfy.c:333 #19 0x00007f34e67f994a in find_issuer (ctx=ctx@entry=0x55e18dc82960, sk=sk@entry=0x55e18e6282b0, x=0x55e18de7c030) at ../crypto/x509/x509_vfy.c:317 #20 0x00007f34e67fac6e in build_chain (ctx=0x55e18dc82960) at ../crypto/x509/x509_vfy.c:3145 #21 0x00007f34e67fac6e in verify_chain (ctx=0x55e18dc82960) at ../crypto/x509/x509_vfy.c:218 #22 0x00007f34e67fbe56 in X509_verify_cert (ctx=ctx@entry=0x55e18dc82960) at ../crypto/x509/x509_vfy.c:295 #23 0x00007f34e6ae2297 in ssl_verify_cert_chain (s=s@entry=0x55e18e636360, sk=sk@entry=0x55e18e62fa90) at ../ssl/ssl_cert.c:436 #24 0x00007f34e6af4d13 in tls_process_server_certificate (s=0x55e18e636360, pkt=0x7ffc4a4b7aa0) at ../ssl/statem/statem_clnt.c:1212 #25 0x00007f34e6af28ed in read_state_machine (s=0x55e18e636360) at ../ssl/statem/statem.c:599 #26 0x00007f34e6af28ed in state_machine (s=0x55e18e636360, server=0) at ../ssl/statem/statem.c:395 #27 0x00007f34e6aeac91 in SSL_do_handshake (s=0x55e18e636360) at ../ssl/ssl_lib.c:3220 #28 0x00007f34dd7210f2 in ssl_connect (ssl=ssl@entry=0x55e18e636360, timeout=-1) at SWIG/_m2crypto_wrap.c:8255 #29 0x00007f34dd72120b in _wrap_ssl_connect (self=<optimized out>, args=<optimized out>) at SWIG/_m2crypto_wrap.c:21441 #30 0x000055e18c298e5a in call_function (oparg=<optimized out>, pp_stack=0x7ffc4a4b7c70) at ../Python/ceval.c:4372 #31 0x000055e18c298e5a in PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3009 #32 0x000055e18c29641a in PyEval_EvalCodeEx (co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kws=<optimized out>, kwcount=0, defs=0x0, defcount=0, closure=0x0) at ../Python/ceval.c:3604 #33 0x000055e18c29e661 in fast_function (nk=0, na=<optimized out>, n=<optimized out>, pp_stack=0x7ffc4a4b7e50, func=<optimized out>) at ../Python/ceval.c:4467 (In both cases I've omitted a large number of probably-uninteresting Python stack frames below the end of the backtrace I quoted, since this is a C-level crash.) -- System Information: Debian Release: buster/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'stable-updates'), (500, 'proposed-updates'), (500, 'experimental-debug'), (500, 'buildd-unstable'), (500, 'unstable'), (500, 'testing'), (500, 'stable'), (100, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.15.0-2-amd64 (SMP w/4 CPU cores) Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8), LANGUAGE=en_GB.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages osc depends on: ii ca-certificates 20170717 ii python 2.7.14-4 ii python-m2crypto 0.27.0-5 ii python-urlgrabber 3.10.2-1 Versions of packages osc recommends: ii bash-completion 1:2.8-1 ii cpio 2.12+dfsg-6 ii obs-build 20180302-2 ii python-keyring 10.6.0-1 ii python-rpm 4.14.1+dfsg1-2 ii rpm2cpio 4.14.1+dfsg1-2 ii sensible-utils 0.0.12 osc suggests no packages. -- no debconf information