curl / Mailing Lists / curl-library / Single Mail
Buy commercial curl support from WolfSSL. We help you work out your issues, debug your libcurl applications, use the API, port to new platforms, add new features and more. With a team lead by the curl founder himself.

Re: reproducible, but limited, SEGFAULTS after upgrade curl/libcurl 7.66 -> 7.67. curl issue, or not?

From: PGNet Dev via curl-library <curl-library_at_cool.haxx.se>
Date: Wed, 13 Nov 2019 18:03:55 -0800

On 11/13/19 4:03 PM, PGNet Dev wrote:
> On 11/13/19 2:39 PM, Daniel Stenberg wrote:
>> If this crash is at least semi-reliably reproduced in your environment
>
> 100%, on all machines tested so far.
>
> Unfortunately, I've not yet found any OTHER reports from others'
>
>> then maybe you can try building a libcurl from source with the debug symbols still present and see if you can get some specifics out of this crash?
>> With a debug version, possibly you could even catch the crash in a debugger and get a full stack trace to show us!

This catches the zypper+libcurl crash ...

Installed debug symbols for curl*, zypper*, etc.

        rpm -qa | egrep -i "^curl|^libcurl|^zypp|^libzypp"
                curl-7.67.0-lp151.272.1.x86_64
+ curl-debuginfo-7.67.0-lp151.272.1.x86_64
                libcurl4-7.67.0-lp151.272.1.x86_64
+ libcurl4-debuginfo-7.67.0-lp151.272.1.x86_64
                libcurl-devel-7.67.0-lp151.272.1.x86_64
                libzypp-17.15.0-lp151.2.3.2.x86_64
+ libzypp-debuginfo-17.15.0-lp151.2.3.2.x86_64
                libzypp-devel-17.15.0-lp151.2.3.2.x86_64
                zypper-1.14.30-lp151.2.3.1.x86_64
+ zypper-debuginfo-1.14.30-lp151.2.3.1.x86_64
                zypper-log-1.14.30-lp151.2.3.1.noarch

Checking

        curl -V
                curl 7.67.0 (x86_64-suse-linux-gnu) libcurl/7.67.0 OpenSSL/1.1.0i-fips zlib/1.2.11 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.2/openssl/zlib nghttp2/1.39.2
                Release-Date: 2019-11-06
                Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
                Features: AsynchDNS GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz Metalink NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets

        ldd `which zypper` | grep -i curl
                libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x00007f7ce9bd4000)

set env ZYPP_MEDIA_CURL_DEBUG 2
zypper clean --all OS15-oss
zypper ref OS15-oss
        Retrieving repository 'OS15-oss' metadata -----------------[\]Segmentation fault (core dumped)

coredumpctl list
        TIME PID UID GID SIG COREFILE EXE
        Wed 2019-11-13 17:31:24 PST 4842 0 0 11 present /usr/bin/zypper

cd /var/lib/systemd/coredump/
ls
        core.zypper.0.3d6e4a4406ce4819a0eefd05a1853b9e.4842.1573695083000000.lz4
unlz4 core.zypper.0.3d6e4a4406ce4819a0eefd05a1853b9e.4842.1573695083000000.lz4

echo "set pagination off" > ~/.gdbinit
gdb zypper /var/lib/systemd/coredump/core.zypper.0.3d6e4a4406ce4819a0eefd05a1853b9e.4842.1573695083000000

        GNU gdb (GDB; openSUSE Leap 15.1) 8.3.1
        Reading symbols from zypper...
        Reading symbols from /usr/lib/debug/usr/bin/zypper-1.14.30-lp151.2.3.1.x86_64.debug...
        [New LWP 4842]
        [Thread debugging using libthread_db enabled]
        Using host libthread_db library "/lib64/libthread_db.so.1".
        Core was generated by `zypper ref OS15-oss'.
        Program terminated with signal SIGSEGV, Segmentation fault.
        #0 Curl_splay (i=..., t=0x563d07704238) at splay.c:55
        55 splay.c: No such file or directory.

        (gdb) bt
        #0 Curl_splay (i=..., t=0x563d07704238) at splay.c:55
        #1 0x00007f8adcc91a33 in Curl_splayinsert (i=..., t=<optimized out>, node=node_at_entry=0x563d076b7698) at splay.c:111
        #2 0x00007f8adcc8a204 in Curl_expire (data=data_at_entry=0x563d076b63d0, milli=milli_at_entry=0, id=id_at_entry=EXPIRE_RUN_NOW) at multi.c:3050
        #3 0x00007f8adcc8a348 in curl_multi_add_handle (multi=0x563d07699b60, data=0x563d076b63d0) at multi.c:469
        #4 0x00007f8ade7dcf57 in zypp::media::multifetchworker::run (this=0x563d07677370) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/media/MediaMultiCurl.cc:763
        #5 0x00007f8ade7e17a0 in zypp::media::multifetchrequest::run (this=this_at_entry=0x7ffefd0a8cb0, urllist=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/media/MediaMultiCurl.cc:864
        #6 0x00007f8ade7e27f8 in zypp::media::MediaMultiCurl::multifetch (this=this_at_entry=0x563d074d2960, filename=..., fp=0x563d076d6530, urllist=urllist_at_entry=0x7ffefd0a8f00, report=report_at_entry=0x7ffefd0a931f, blklist=<optimized out>, blklist_at_entry=0x7ffefd0a91b0, filesize=<optimized out>) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/media/MediaMultiCurl.cc:1560
        #7 0x00007f8ade7e3be8 in zypp::media::MediaMultiCurl::multifetch (filesize=..., blklist=0x7ffefd0a91b0, report=0x7ffefd0a931f, urllist=0x7ffefd0a8f00, fp=<optimized out>, filename=..., this=0x563d074d2960) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/media/MediaMultiCurl.h:56
        #8 zypp::media::MediaMultiCurl::doGetFileCopy (this=0x563d074d2960, filename=..., target=..., report=..., expectedFileSize_r=..., options=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/media/MediaMultiCurl.cc:1442
        #9 0x00007f8ade7d9704 in zypp::media::MediaCurl::getFileCopy (this=0x563d074d2960, filename=..., target=..., expectedFileSize_r=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/media/MediaCurl.cc:981
        #10 0x00007f8ade7cc920 in zypp::media::MediaCurl::getFile (this=0x563d074d2960, filename=..., expectedFileSize_r=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/media/MediaCurl.cc:964
        #11 0x00007f8ade7a63cd in zypp::media::MediaHandler::provideFile (this=this_at_entry=0x563d074d2960, filename=..., expectedFileSize_r=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/media/MediaHandler.cc:1014
        #12 0x00007f8ade7a013a in zypp::media::MediaAccess::provideFile (this=<optimized out>, filename=..., expectedFileSize=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/media/MediaAccess.cc:346
        #13 0x00007f8ade7eeea1 in zypp::media::MediaManager::provideFile (this=this_at_entry=0x7ffefd0a983f, accessId=accessId_at_entry=2, filename=..., expectedFileSize=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/media/MediaManager.cc:636
        #14 0x00007f8ade96f3f4 in zypp::ProvideFileOperation::operator() (file=..., media=2, this=0x7ffefd0a9b10) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/MediaSetAccess.cc:118
        #15 boost::detail::function::void_function_ref_invoker2<zypp::ProvideFileOperation, void, unsigned int, zypp::filesystem::Pathname const&>::invoke (function_obj_ptr=..., a0=2, a1=...) at /usr/include/boost/function/function_template.hpp:194
        #16 0x00007f8ade96bb51 in boost::function2<void, unsigned int, zypp::filesystem::Pathname const&>::operator() (a1=..., a0=2, this=0x7ffefd0a9af0) at /usr/include/boost/function/function_template.hpp:759
        #17 zypp::MediaSetAccess::provide(boost::function<void (unsigned int, zypp::filesystem::Pathname const&)>, zypp::OnMediaLocation const&, zypp::base::Flags<zypp::MediaSetAccess::ProvideFileOption>, zypp::filesystem::Pathname const&) (this=this_at_entry=0x7ffefd0aa880, op=..., resource=..., options=..., deltafile=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/MediaSetAccess.cc:260
        #18 0x00007f8ade96ce2f in zypp::MediaSetAccess::provideFile (this=this_at_entry=0x7ffefd0aa880, resource=..., options=..., deltafile=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/MediaSetAccess.cc:165
        #19 0x00007f8ade93d073 in zypp::Fetcher::Impl::provideToDest (this=this_at_entry=0x563d0756c2b0, media_r=..., destDir_r=..., jobp_r=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/Fetcher.cc:519
        #20 0x00007f8ade93dd54 in zypp::Fetcher::Impl::start(zypp::filesystem::Pathname const&, zypp::MediaSetAccess&, boost::function<bool (zypp::ProgressData const&)> const&) (this=this_at_entry=0x563d0756c2b0, dest_dir=..., media=..., progress_receiver=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/Fetcher.cc:797
        #21 0x00007f8ade93f3d3 in zypp::Fetcher::start(zypp::filesystem::Pathname const&, zypp::MediaSetAccess&, boost::function<bool (zypp::ProgressData const&)> const&) (this=this_at_entry=0x563d0747b740, dest_dir=..., media=..., progress_receiver=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/Fetcher.cc:876
        #22 0x00007f8ade8588d2 in zypp::repo::yum::Downloader::download(zypp::MediaSetAccess&, zypp::filesystem::Pathname const&, boost::function<bool (zypp::ProgressData const&)> const&) (this=this_at_entry=0x563d0747b740, media=..., dest_dir=..., progressrcv=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/repo/yum/Downloader.cc:196
        #23 0x00007f8ade9cd857 in zypp::RepoManager::Impl::refreshMetadata(zypp::RepoInfo const&, zypp::RepoManager::RawMetadataRefreshPolicy, boost::function<bool (zypp::ProgressData const&)> const&) (this=this_at_entry=0x563d074f5c60, info=..., policy=policy_at_entry=zypp::RepoManager::RefreshForced, progress=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/RepoManager.cc:1178
        #24 0x00007f8ade9ce551 in zypp::RepoManager::refreshMetadata(zypp::RepoInfo const&, zypp::RepoManager::RawMetadataRefreshPolicy, boost::function<bool (zypp::ProgressData const&)> const&) (this=this_at_entry=0x563d0754ba20, info=..., policy=policy_at_entry=zypp::RepoManager::RefreshForced, progressrcv=...) at /usr/src/debug/libzypp-17.15.0-lp151.2.3.2.x86_64/zypp/RepoManager.cc:2569
        #25 0x0000563d050390c1 in refresh_raw_metadata (zypper=..., repo=..., force_download=force_download_at_entry=false) at /usr/src/debug/zypper-1.14.30-lp151.2.3.1.x86_64/src/repos.cc:295
        #26 0x0000563d050bca44 in RefreshRepoCmd::refreshRepository (zypper=..., repo=..., flags_r=flags_r_at_entry=...) at /usr/src/debug/zypper-1.14.30-lp151.2.3.1.x86_64/src/commands/repos/refresh.cc:155
        #27 0x0000563d050bd888 in RefreshRepoCmd::refreshRepositories (zypper=..., flags_r=..., repos_r=...) at /usr/src/debug/zypper-1.14.30-lp151.2.3.1.x86_64/src/commands/repos/refresh.cc:260
        #28 0x0000563d050bf6db in RefreshRepoCmd::execute (this=0x563d07492300, zypper=..., positionalArgs_r=...) at /usr/src/debug/zypper-1.14.30-lp151.2.3.1.x86_64/src/commands/repos/refresh.cc:142
        #29 0x0000563d0506b142 in ZypperBaseCommand::run (this=0x563d07492300, zypper=...) at /usr/src/debug/zypper-1.14.30-lp151.2.3.1.x86_64/src/commands/basecommand.cc:255
        #30 0x0000563d0500ac10 in Zypper::doCommand (this=this_at_entry=0x563d054679c0 <Zypper::instance()::_instance>, cmdArgc=cmdArgc_at_entry=3, cmdArgv=cmdArgv_at_entry=0x7ffefd0abf88, firstFlag=1) at /usr/src/debug/zypper-1.14.30-lp151.2.3.1.x86_64/src/Zypper.cc:679
        #31 0x0000563d04fe4f59 in Zypper::main (this=0x563d054679c0 <Zypper::instance()::_instance>, argc=3, argv=0x7ffefd0abf88) at /usr/src/debug/zypper-1.14.30-lp151.2.3.1.x86_64/src/Zypper.cc:217
        #32 0x0000563d04fe4529 in main (argc=3, argv=0x7ffefd0abf88) at /usr/src/debug/zypper-1.14.30-lp151.2.3.1.x86_64/src/main.cc:137
        (gdb)

note,

  curl_multi_add_handle() @
    https://github.com/openSUSE/libzypp/blob/02a52477c0378127d0c13e4797826ee1367936ac/zypp/media/MediaMultiCurl.cc#L763

If there's more specific detail that can/should be gotten, pls specify what/how to grab it.
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.haxx.se/mail/etiquette.html
Received on 2019-11-14