Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CRYPTO_refcount_dec_and_test_zero() crash #1633

Open
bagder opened this issue Oct 16, 2023 · 0 comments
Open

CRYPTO_refcount_dec_and_test_zero() crash #1633

bagder opened this issue Oct 16, 2023 · 0 comments

Comments

@bagder
Copy link
Contributor

bagder commented Oct 16, 2023

Today I built curl from git master using quiche from git master, using boringssl from their git master.

This crash happens every time for me, running on Linux (debian unstable, kernel 6.3.0).

Doing a h1 or h2 request work fine, using the same build (and thus the same boringssl). Changing the URL to https://example.com or https://cloudflare.com does the same thing for me.

I cannot rule out that curl is doing something wrong to make this happen, but I don't know what.


$ gdb --args ./src/curl --http3-only https://curl.se/
GNU gdb (Debian 13.2-1) 13.2
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./src/curl...
(gdb) run
Starting program: /home/dast/src/curl/src/curl --http3-only https://curl.se/
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff63ff6c0 (LWP 2009278)]
[Thread 0x7ffff63ff6c0 (LWP 2009278) exited]

Thread 1 "curl" received signal SIGSEGV, Segmentation fault.
CRYPTO_refcount_dec_and_test_zero (
    in_count=in_count@entry=0x7ffff7b74878 <bssl::ssl_crypto_x509_method+24>)
    at /home/dast/src/boringssl/crypto/refcount.c:53
53	      if (CRYPTO_atomic_compare_exchange_weak_u32(count, &expected,
(gdb) bt full
#0  CRYPTO_refcount_dec_and_test_zero (
    in_count=in_count@entry=0x7ffff7b74878 <bssl::ssl_crypto_x509_method+24>)
    at /home/dast/src/boringssl/crypto/refcount.c:53
        new_value = 4155852271
        count = 0x7ffff7b74878 <bssl::ssl_crypto_x509_method+24>
        expected = 4155852272
#1  0x00007ffff7a4ece6 in X509_free (x509=0x7ffff7b74860 <bssl::ssl_crypto_x509_method>)
    at /home/dast/src/boringssl/crypto/x509/x_x509.c:126
No locals.
#2  0x00007ffff7b54521 in bssl::ssl_crypto_x509_session_cache_objects (sess=0x5555556e3e08)
    at /home/dast/src/boringssl/ssl/ssl_x509.cc:323
        chain = {_M_t = {<std::__uniq_ptr_impl<stack_st_X509, bssl::internal::Deleter>> = {
              _M_t = {<std::_Tuple_impl<0, stack_st_X509*, bssl::internal::Deleter>> = {<std::_Tuple_impl<1, bssl::internal::Deleter>> = {<std::_Head_base<1, bssl::internal::Deleter, true>> = {
                      _M_head_impl = {<No data fields>}}, <No data fields>}, <std::_Head_base<0, stack_st_X509*, false>> = {
                    _M_head_impl = 0x0}, <No data fields>}, <No data fields>}}, <No data fields>}}
        chain_without_leaf = {
          _M_t = {<std::__uniq_ptr_impl<stack_st_X509, bssl::internal::Deleter>> = {
              _M_t = {<std::_Tuple_impl<0, stack_st_X509*, bssl::internal::Deleter>> = {<std::_Tuple_impl<1, bssl::internal::Deleter>> = {<std::_Head_base<1, bssl::internal::Deleter, true>> = {
                      _M_head_impl = {<No data fields>}}, <No data fields>}, <std::_Head_base<0, stack_st_X509*, false>> = {
                    _M_head_impl = 0x0}, <No data fields>}, <No data fields>}}, <No data fields>}}
        leaf = <optimized out>
#3  0x00007ffff7cc8400 in bssl::tls13_process_certificate (hs=0x555555708678, msg=..., 
    allow_anonymous=false) at /home/daniel/src/boringssl/ssl/tls13_both.cc:302
        ssl = 0x555555707c88
        body = {data = 0x5555558030eb "\017", len = 0}
        decompressed = {
          _M_t = {<std::__uniq_ptr_impl<crypto_buffer_st, bssl::internal::Deleter>> = {
              _M_t = {<std::_Tuple_impl<0, crypto_buffer_st*, bssl::internal::Deleter>> = {<std::_Tuple_impl<1, bssl::internal::Deleter>> = {<std::_Head_base<1, bssl::internal::Deleter, true>> = {
                      _M_head_impl = {<No data fields>}}, <No data fields>}, <std::_Head_base<0, crypto_buffer_st*, false>> = {
                    _M_head_impl = 0x0}, <No data fields>}, <No data fields>}}, <No data fields>}}
        __PRETTY_FUNCTION__ = "bool bssl::tls13_process_certificate(SSL_HANDSHAKE*, const SSLMessage&, bool)"
        context = {data = 0x55555580217d "", len = 0}
        certificate_list = {data = 0x5555558030eb "\017", len = 0}
        certs = {
          _M_t = {<std::__uniq_ptr_impl<stack_st_CRYPTO_BUFFER, bssl::internal::Deleter>> = {_M_t = {<std::_Tuple_impl<0, stack_st_CRYPTO_BUFFER*, bssl::internal::Deleter>> = {<std::_Tuple_impl<1, bssl::internal::Deleter>> = {<std::_Head_base<1, bssl::internal::Deleter, true>> = {
                      _M_head_impl = {<No data fields>}}, <No data fields>}, <std::_Head_base<0, stack_st_CRYPTO_BUFFER*, false>> = {
                    _M_head_impl = 0x0}, <No data fields>}, <No data fields>}}, <No data fields>}}
        retain_sha256 = false
        pkey = {_M_t = {<std::__uniq_ptr_impl<evp_pkey_st, bssl::internal::Deleter>> = {
              _M_t = {<std::_Tuple_impl<0, evp_pkey_st*, bssl::internal::Deleter>> = {<std::_Tuple_impl<1, bssl::internal::Deleter>> = {<std::_Head_base<1, bssl::internal::Deleter, true>> = {
                      _M_head_impl = {<No data fields>}}, <No data fields>}, <std::_Head_base<0, evp_pkey_st*, false>> = {_M_head_impl = 0x0}, <No data fields>}, <No data fields>}}, <No data fields>}}
#4  0x00007ffff7ccc7a0 in bssl::do_read_server_certificate (hs=0x555555708678)
    at /home/daniel/src/boringssl/ssl/tls13_client.cc:704
        ssl = 0x555555707c88
        msg = {is_v2_hello = false, type = 11 '\v', body = {data = 0x55555580217c "", 
            len = 3951}, raw = {data = 0x555555802178 "\v", len = 3955}}
#5  0x00007ffff7ccd36b in bssl::tls13_client_handshake (hs=0x555555708678)
    at /home/daniel/src/boringssl/ssl/tls13_client.cc:950
        ret = bssl::ssl_hs_error
        state = bssl::state_read_server_certificate
#6  0x00007ffff7cec8db in bssl::do_tls13 (hs=0x555555708678)
    at /home/daniel/src/boringssl/ssl/handshake_client.cc:900
        wait = 21845
#7  0x00007ffff7cefba5 in bssl::ssl_client_handshake (hs=0x555555708678)
    at /home/daniel/src/boringssl/ssl/handshake_client.cc:1873
        ret = bssl::ssl_hs_error
        state = bssl::state_tls13
#8  0x00007ffff7ce99db in bssl::ssl_run_handshake (hs=0x555555708678, 
    out_early_return=0x7ffffffe8c43) at /home/daniel/src/boringssl/ssl/handshake.cc:738
        ssl = 0x555555707c88
        __PRETTY_FUNCTION__ = "int bssl::ssl_run_handshake(SSL_HANDSHAKE*, bool*)"
#9  0x00007ffff7cb049d in SSL_do_handshake (ssl=0x555555707c88)
    at /home/daniel/src/boringssl/ssl/ssl_lib.cc:851
        hs = 0x555555708678
        early_return = false
        ret = 1
#10 0x00007ffff7c58de6 in quiche::tls::Handshake::do_handshake (self=<optimized out>, 
    ex_data=0x7ffffffe8e70) at quiche/src/tls.rs:632
No locals.
#11 0x00007ffff7c464db in quiche::Connection::do_handshake (self=0x55555570a110, now=...)
    at quiche/src/lib.rs:6410
        ex_data = quiche::tls::ExData {application_protos: 0x55555570e3a8, pkt_num_spaces: 0x55555570a290, session: 0x55555570e2f0, local_error: 0x55555570e3f0, keylog: core::option::Option<&mut alloc::boxed::Box<(dyn std::io::Write + core::marker::Send + core::marker::Sync), alloc::alloc::Global>>::None, trace_id: "3c227c28b39d8fd0b2f0dfe34d6cb4d9bfbbb851", is_server: false}
#12 0x00007ffff7c47e63 in quiche::Connection::process_frame (self=0x55555570a110, 
    frame=..., hdr=<optimized out>, recv_path_id=<optimized out>, epoch=<optimized out>, 
    now=...) at quiche/src/lib.rs:6758
        stream = 0x55555570c9d0
        level = quiche::crypto::Level::Handshake
        crypto_buf = [88, 109, 153, 254, 87, 232, 54, 14, 240, 14, 35, 170, 253, 136, 151, 
          208, 227, 92, 14, 148, 73, 181, 181, 23, 53, 210, 46, 191, 78, 133, 239, 24, 224, 
          133, 146, 235, 6, 59, 108, 41, 35, 9, 96, 220, 69, 2, 76, 18, 24, 59, 233, 251, 
          14, 222, 220, 68, 248, 88, 152, 174, 234, 189, 69, 69, 161, 136, 93, 102, 202, 
          254, 16, 233, 111, 130, 200, 17, 66, 13, 251, 233, 236, 227, 134, 0, 222, 157, 
          16, 227, 56, 250, 164, 125, 177, 216, 232, 73, 130, 132, 6, 155, 43, 232, 107, 
          79, 1, 12, 56, 119, 46, 249, 221, 231, 57, 0, 0, 15, 0, 1, 4, 8, 4, 1, 0, 114, 
          48, 43, 174, 143, 47, 120, 30, 131, 165, 113, 224, 79, 68, 3, 12, 184, 124, 2, 5, 
          13, 117, 38, 10, 67, 81, 56, 66, 45, 88, 188, 121, 237, 248, 164, 203, 225, 240, 
          237, 78, 200, 102, 43, 68, 90, 36, 208, 144, 52, 5, 241, 47, 60, 101, 94, 44, 
          218, 81, 217, 90, 25, 124, 45, 239, 168, 107, 229, 106, 209, 168, 223, 242, 130, 
          195, 238, 196, 112...]
        data = <optimized out>
#13 0x00007ffff7c39eaa in quiche::Connection::recv_single (self=0x55555570a110, buf=..., 
    info=<optimized out>, recv_pid=<optimized out>) at quiche/src/lib.rs:2732
        e = <optimized out>
        frame = quiche::frame::Frame::ACK{ack_delay: 0, ranges: <error reading variable: Could not find active enum variant>, ecn_counts: core::option::Option<quiche::frame::EcnCounts>::None}
        probing = false
        frame_processing_err = <optimized out>
        ack_elicited = true
        recv_pid = 0
        payload = octets::Octets {buf: &[u8] [], off: 140737488277936}
        aead_next = core::option::Option<(quiche::crypto::Open, quiche::crypto::Seal)>::Some((quiche::crypto::Open {alg: quiche::crypto::Algorithm::AES256_GCM, secret: alloc::vec::Vec<u8, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<u8, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: 0x9b91bb}, _marker: core::marker::PhantomData<u8>}, cap: 320970447, alloc: alloc::alloc::Global}, len: 0}, header: quiche::crypto::HeaderProtectionKey {hpk: ring::aead::quic::HeaderProtectionKey {inner: ring::aead::quic::KeyInner::Aes(ring::aead::aes::Key {inner: ring::aead::aes::AES_KEY {rd_key: [0, 8, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 0, 4150715085, 32767, 
                          1433443744, 21845, 6, 0, 2, 0, 0, 0, 8, 0, 80, 0, 4152011904, 
                          32767, 4150715085, 32767, 1433443840, 21845, 3, 0, 1433427032, 
                          21845, 4150717449, 32767, 999999999, 0, 40, 0, 4152011904, 32767, 
                          4294967120, 4294967295, 0, 0, 4294901056, 32767, 
                          40], rounds: 0}, cpu_features: ring::cpu::Features (())}), algorithm: 0xa}, hp_key: alloc::vec::Vec<u8, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<u8, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: 0x0}, _marker: core::marker::PhantomData<u8>}, cap: 140737344105481, alloc: alloc::alloc::Global}, len: 0}}, packet: quiche::crypto::PacketKey {ctx: quiche::crypto::EVP_AEAD_CTX {aead: 20, opaque: [64, 131, 108, 85, 85, 85, 0, 0, 20, 0 <repeats 15 times>, 17, 
                    0, 0, 0, 0, 0, 0, 0, 176, 136, 108, 85, 85, 85, 0, 0, 17, 
                    0 <repeats 23 times>, 137, 163, 97, 81, 222, 172, 135, 7, 0, 0, 0, 0, 
                    0, 0, 0, 0, 91, 152, 129, 225, 137, 92, 52, 121, 176, 153, 252, 247, 
                    255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 209, 254, 255, 255, 127, 
                    0, 0, 1, 0, 0, 0, 2, 0 <repeats 36 times>, 202, 154, 59, 
                    0 <repeats 20 times>, 187, 145, 155, 0, 0, 0, 0, 0, 175, 158, 33, 19, 
                    0, 0, 0, 0, 187, 145, 155, 0, 0, 0, 0, 0, 175, 158, 33, 19, 0, 0, 0, 0, 
                    187, 145, 155, 0, 0, 0, 0, 0, 175, 158, 33, 19, 3, 
                    0 <repeats 115 times>, 187, 145, 155, 0, 0, 0, 0, 0, 190, 158, 33, 19, 
                    0 <repeats 12 times>, 
                    187...], alignment: 0, tag_len: 0}, nonce: alloc::vec::Vec<u8, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<u8, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: 0x2ee0}, _marker: core::marker::PhantomData<u8>}, cap: 1200, alloc: alloc::alloc::Global}, len: 0}}}, quiche::crypto::Seal {alg: quiche::crypto::Algorithm::AES128_GCM, secret: alloc::vec::Vec<u8, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<u8, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: 0x1}, _marker: core::marker::PhantomData<u8>}, cap: 20, alloc: alloc::alloc::Global}, len: 140737350330631}, header: quiche::crypto::HeaderProtectionKey {hpk: ring::aead::quic::HeaderProtectionKey {inner: ring::aead::quic::KeyInner::Aes(ring::aead::aes::Key {inner: ring::aead::aes::AES_KEY {rd_key: [0, 10195387, 0, 
                          320970259, 0, 0, 0, 0, 0, 10195387, 0, 320970259, 0, 0, 0, 0, 0, 
                          10195387, 0, 320970259, 0 <repeats 11 times>, 2, 
                          0 <repeats 19 times>, 1000000000, 0, 0, 0, 1000000000, 0, 0, 0, 
                          1000000000], rounds: 0}, cpu_features: ring::cpu::Features (())}), algorithm: 0x0}, hp_key: alloc::vec::Vec<u8, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<u8, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: 0x3b9aca00}, _marker: core::marker::PhantomData<u8>}, cap: 0, alloc: alloc::alloc::Global}, len: 0}}, packet: quiche::crypto::PacketKey {ctx: quiche::crypto::EVP_AEAD_CTX {aead: 0, opaque: [160, 142, 112, 85, 85, 85, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 200, 
                    1, 0, 0, 0, 0, 0, 0, 144, 183, 230, 247, 255, 127, 0, 0, 0, 0, 0, 0, 0, 
                    0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 158, 112, 85, 85, 85, 0, 0, 40, 0, 
                    0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 64, 253, 254, 255, 255, 127, 
                    0, 0, 240, 110, 112, 85, 85, 85, 0, 0, 48, 156, 200, 247, 255, 127, 
                    0 <repeats 74 times>, 255 <repeats 16 times>, 0 <repeats 40 times>, 
                    255 <repeats 16 times>, 0 <repeats 112 times>, 187, 145, 155, 0, 0, 0, 
                    0, 0, 222, 158, 33, 19, 0 <repeats 12 times>, 187, 145, 155, 0, 0, 0, 
                    0, 0, 222, 158, 33, 19, 0 <repeats 12 times>, 187, 145, 155, 0, 0, 0, 
                    0, 0, 222, 158, 33, 
                    19...], alignment: 8, tag_len: 0}, nonce: alloc::vec::Vec<u8, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<u8, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: 0x0}, _marker: core::marker::PhantomData<u8>}, cap: 0, alloc: alloc::alloc::Global}, len: 8}}}))
        qlog_frames = alloc::vec::Vec<qlog::events::quic::QuicFrame, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<qlog::events::quic::QuicFrame, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<qlog::events::quic::QuicFrame> {pointer: core::ptr::non_null::NonNull<qlog::events::quic::QuicFrame> {pointer: 0x55555570e378}, _marker: core::marker::PhantomData<qlog::events::quic::QuicFrame>}, cap: 93824994026072, alloc: alloc::alloc::Global}, len: 0}
        pn_len = <optimized out>
        pn = <optimized out>
        aead_tag_len = 16
        aead = <optimized out>
        aead = <optimized out>
        epoch = quiche::packet::Epoch::Application
        payload_len = <optimized out>
        hdr = quiche::packet::Header {ty: quiche::packet::Type::Initial, version: 0, dcid: quiche::packet::ConnectionId (<error reading variable: Could not find active enum variant>), scid: quiche::packet::ConnectionId (<error reading variable: Could not find active enum variant>), pkt_num: 93824993757360, pkt_num_len: 17, token: core::option::Option<alloc::vec::Vec<u8, alloc::alloc::Global>>::Some(alloc::vec::Vec<u8, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<u8, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u8> {pointer: core::ptr::non_null::NonNull<u8> {pointer: 0x2}, _marker: core::marker::PhantomData<u8>}, cap: 4, alloc: alloc::alloc::Global}, len: 542592350969504649}), versions: core::option::Option<alloc::vec::Vec<u32, alloc::alloc::Global>>::Some(alloc::vec::Vec<u32, alloc::alloc::Global> {buf: alloc::raw_vec::RawVec<u32, alloc::alloc::Global> {ptr: core::ptr::unique::Unique<u32> {pointer: core::ptr::non_null::NonNull<u32> {pointer: 0x79345c89e181985b}, _marker: core::marker::PhantomData<u32>}, cap: 0, alloc: alloc::alloc::Global}, len: 140737353914800}), key_phase: false}
        b = octets::OctetsMut {buf: &mut [u8] <error reading variable: value requires 93824994026064 bytes, which is more than max-value-size>, off: 140737488277888}
        buf_len = <optimized out>
        now = <optimized out>
        is_closing = <optimized out>
        buf_len = <optimized out>
        b = <optimized out>
        val = <error reading variable val (Cannot access memory at address 0x0)>
        hdr = <error reading variable hdr (Cannot access memory at address 0x0)>
        lvl = <optimized out>
        versions = <optimized out>
        supported_versions = <optimized out>
        found_version = <optimized out>
        iter = <optimized out>
        v = <optimized out>
        aead_open = <error reading variable aead_open (Cannot access memory at address 0x298)>
        aead_seal = <error reading variable aead_seal (Cannot access memory at address 0x298)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <error reading variable val (Cannot access memory at address 0x298)>
        payload_len = <optimized out>
        aead_seal = <error reading variable aead_seal (Cannot access memory at address 0x298)>
        aead_open = <error reading variable aead_open (Cannot access memory at address 0x298)>
        epoch = <optimized out>
        aead = <error reading variable aead (Cannot access memory at address 0x0)>
        pkt_len = <optimized out>
        pkt = <optimized out>
        aead = <optimized out>
        aead_tag_len = <optimized out>
        pn = <optimized out>
        pn_len = <optimized out>
        lvl = <optimized out>
        qlog_frames = <optimized out>
        aead_next = <error reading variable aead_next (Cannot access memory at address 0x298)>
        key_update = <optimized out>
        lvl = <optimized out>
        val = <error reading variable val (Cannot access memory at address 0x298)>
        val = <optimized out>
        payload = <optimized out>
        pkt_dcid = <error reading variable pkt_dcid (Cannot access memory at address 0x0)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        lvl = <optimized out>
        recv_pid = <optimized out>
        open_next = <error reading variable open_next (Cannot access memory at address 0x298)>
        seal_next = <error reading variable seal_next (Cannot access memory at address 0x298)>
        lvl = <optimized out>
        open_prev = <error reading variable open_prev (Cannot access memory at address 0x298)>
        recv_path = <optimized out>
        q = <optimized out>
        trigger = <error reading variable trigger (Cannot access memory at address 0x0)>
        ev_data_client = <error reading variable ev_data_client (Cannot access memory at address 0x0)>
        ev_data_server = <error reading variable ev_data_server (Cannot access memory at address 0x0)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        ack_elicited = <optimized out>
        frame_processing_err = <error reading variable frame_processing_err (Cannot access memory at address 0x0)>
        probing = <optimized out>
        val = <error reading variable val (Cannot access memory at address 0x0)>
        frame = <error reading variable frame (Cannot access memory at address 0x0)>
        _q = <optimized out>
        e = <error reading variable e (Cannot access memory at address 0x0)>
        q = <optimized out>
        packet_size = <optimized out>
        qlog_pkt_hdr = <error reading variable qlog_pkt_hdr (Cannot access memory at address 0x0)>
        qlog_raw_info = <error reading variable qlog_raw_info (Cannot access memory at address 0x0)>
        ev_data = <error reading variable ev_data (Cannot access memory at address 0x0)>
        q = <optimized out>
        recv_path = <optimized out>
        ev_data = <error reading variable ev_data (Cannot access memory at address 0x0)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        e = <error reading variable e (Cannot access memory at address 0x0)>
        q = <optimized out>
        ev_data = <error reading variable ev_data (Cannot access memory at address 0x0)>
        iter = <optimized out>
        p = <optimized out>
        iter = <optimized out>
        acked = <error reading variable acked (Cannot access memory at address 0x0)>
        ranges = <error reading variable ranges (Cannot access memory at address 0x0)>
        largest_acked = <optimized out>
        offset = <optimized out>
        length = <optimized out>
        stream_id = <optimized out>
        stream = <optimized out>
        local = <optimized out>
        v = <optimized out>
        stream_id = <optimized out>
        offset = <optimized out>
        length = <optimized out>
        stream = <optimized out>
        q = <optimized out>
        ev_data = <error reading variable ev_data (Cannot access memory at address 0x0)>
        local = <optimized out>
        v = <optimized out>
        no_dcid = <optimized out>
        iter = <optimized out>
        pid = <optimized out>
        p = <optimized out>
        dcid_seq = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        seq = <optimized out>
        active_path_id = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        idle_timeout = <optimized out>
        read = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <error reading variable val (Cannot access memory at address 0x298)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        v = <optimized out>
        e = <error reading variable e (Cannot access memory at address 0x0)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <error reading variable val (Cannot access memory at address 0x298)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        lvl = <optimized out>
        aead_open = <error reading variable aead_open (Cannot access memory at address 0x298)>
        aead_seal = <error reading variable aead_seal (Cannot access memory at address 0x298)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <error reading variable val (Cannot access memory at address 0x298)>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
        val = <optimized out>
        residual = <error reading variable residual (Cannot access memory at address 0x0)>
#14 quiche::Connection::recv (self=0x55555570a110, buf=..., info=...)
    at quiche/src/lib.rs:2128
        left = <optimized out>
        done = <optimized out>
        recv_pid = core::option::Option<usize>::None
        len = <optimized out>
#15 0x00007ffff7c9518b in quiche::ffi::quiche_conn_recv (conn=0x55555570a110, 
    buf=0x7ffffffed180, buf_len=1280, info=0x7ffffffecf70) at quiche/src/ffi.rs:726
        buf = &mut [u8] [225, 0, 0, 0, 1, 20, 60, 34, 124, 40, 179, 157, 143, 208, 178, 
          240, 223, 227, 77, 108, 180, 217, 191, 187, 184, 81, 17, 135, 112, 22, 253, 106, 
          166, 59, 31, 18, 158, 165, 196, 235, 192, 204, 14, 186, 67, 182, 0, 4, 6, 77, 
          142, 67, 159, 139, 58, 198, 221, 39, 81, 110, 255, 188, 100, 245, 51, 67, 79, 2, 
          3, 1, 0, 1, 163, 130, 1, 70, 48, 130, 1, 66, 48, 15, 6, 3, 85, 29, 19, 1, 1, 255, 
          4, 5, 48, 3, 1, 1, 255, 48, 14, 6, 3, 85, 29, 15, 1, 1, 255, 4, 4, 3, 2, 1, 6, 
          48, 75, 6, 8, 43, 6, 1, 5, 5, 7, 1, 1, 4, 63, 48, 61, 48, 59, 6, 8, 43, 6, 1, 5, 
          5, 7, 48, 2, 134, 47, 104, 116, 116, 112, 58, 47, 47, 97, 112, 112, 115, 46, 105, 
          100, 101, 110, 116, 114, 117, 115, 116, 46, 99, 111, 109, 47, 114, 111, 111, 116, 
          115, 47, 100, 115, 116, 114, 111, 111, 116, 99, 97, 120, 51, 46, 112, 55, 99, 48, 
          31, 6, 3, 85, 29, 35, 4, 24, 48...]
#16 0x0000555555632fc7 in recv_pkt (pkt=0x7ffffffed180 <incomplete sequence \341>, 
    pktlen=1280, remote_addr=0x7ffffffed100, remote_addrlen=28, ecn=0, userp=0x7fffffffd260)
    at vquic/curl_quiche.c:681
        r = 0x7fffffffd260
        ctx = 0x555555705b28
        recv_info = {from = 0x7ffffffed100, from_len = 28, to = 0x555555705b30, to_len = 28}
        nread = 140737344575706
#17 0x00005555555d3957 in recvmsg_packets (cf=0x555555705d18, data=0x5555556e8948, 
    qctx=0x555555705b28, max_pkts=1000, recv_cb=0x555555632f3a <recv_pkt>, 
    userp=0x7fffffffd260) at vquic/vquic.c:458
        msg_iov = {iov_base = 0x7ffffffed180, iov_len = 65536}
        msg = {msg_name = 0x7ffffffed100, msg_namelen = 28, msg_iov = 0x7fffffffd1c0, 
          msg_iovlen = 1, msg_control = 0x0, msg_controllen = 0, msg_flags = 0}
        buf = "\341\000\000\000\001\024<\"|(\263\235\217в\360\337\343Ml\264ٿ\273\270Q\021\207p\026\375j\246;\037\022\236\245\304\353\300\314\016\272C\266\000\004\006M\216C\237\213:\306\335'Qn\377\274d\3653CO\002\003\001\000\001\243\202\001F0\202\001B0\017\006\003U\035\023\001\001\377\004\0050\003\001\001\3770\016\006\003U\035\017\001\001\377\004\004\003\002\001\0060K\006\b+\006\001\005\005\a\001\001\004?0=0;\006\b+\006\001\005\005\a0\002\206/http://apps.identrust.com/roots/dstrootcax3.p7c0\037\006\003U\035#\004\0300\026\200"...
        remote_addr = {ss_family = 10, 
          __ss_padding = "\001\273\000\000\000\000*\004NB\006\000\000\000\000\000\000\000\000\000\003G\000\000\000\000\377\377\377\377", '\000' <repeats 87 times>, __ss_align = 0}
        total_nread = 2560
        pkts = 2
        nread = 1280
        errstr = '\000' <repeats 60 times>, "\t\000\000\000\020\000\000\000\000\000\000\000\260\213lUUU\000\000\020\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\000\236pUUU\000\000(\000\000\000\000\000\000\000(\000\000\000\000\000\000\000@\375\376\377\377\177\000\000\360npUUU\000\0000\234\310\367\377\177", '\000' <repeats 74 times>...
        result = CURLE_OK
        __PRETTY_FUNCTION__ = "recvmsg_packets"
#18 0x00005555555d3a05 in vquic_recv_packets (cf=0x555555705d18, data=0x5555556e8948, 
    qctx=0x555555705b28, max_pkts=1000, recv_cb=0x555555632f3a <recv_pkt>, 
    userp=0x7fffffffd260) at vquic/vquic.c:542
        result = 21845
#19 0x000055555563318a in cf_process_ingress (cf=0x555555705d18, data=0x5555556e8948)
    at vquic/curl_quiche.c:725
        ctx = 0x555555705b28
        rctx = {cf = 0x555555705d18, data = 0x5555556e8948, pkts = 2}
        result = CURLE_OK
        __PRETTY_FUNCTION__ = "cf_process_ingress"
#20 0x000055555563518b in cf_quiche_connect (cf=0x555555705d18, data=0x5555556e8948, 
    blocking=false, done=0x7fffffffd637) at vquic/curl_quiche.c:1490
        ctx = 0x555555705b28
        result = CURLE_OK
#21 0x00005555555dd1eb in Curl_conn_cf_connect (cf=0x555555705d18, data=0x5555556e8948, 
    blocking=false, done=0x7fffffffd637) at cfilters.c:296
No locals.
#22 0x00005555555e0186 in baller_connect (cf=0x555555705228, data=0x5555556e8948, 
    baller=0x555555705268, now=0x7fffffffd3a0, connected=0x7fffffffd637) at connect.c:553
No locals.
#23 0x00005555555e030d in is_connected (cf=0x555555705228, data=0x5555556e8948, 
    connected=0x7fffffffd637) at connect.c:608
        baller = 0x555555705268
        ctx = 0x5555557051c8
        conn = 0x5555556e7828
        result = 21845
        now = {tv_sec = 10195221, tv_usec = 343405}
        i = 0
        ongoing = 0
        not_started = 0
        hostname = 0x5555556e8948 "\255\333\336\300"
#24 0x00005555555e0ea9 in cf_he_connect (cf=0x555555705228, data=0x5555556e8948, 
    blocking=false, done=0x7fffffffd637) at connect.c:906
        ctx = 0x5555557051c8
        result = CURLE_OK
        __PRETTY_FUNCTION__ = "cf_he_connect"
#25 0x00005555555dd1eb in Curl_conn_cf_connect (cf=0x555555705228, data=0x5555556e8948, 
    blocking=false, done=0x7fffffffd637) at cfilters.c:296
No locals.
#26 0x00005555555e17eb in cf_setup_connect (cf=0x555555705188, data=0x5555556e8948, 
    blocking=false, done=0x7fffffffd637) at connect.c:1201
        ctx = 0x555555705158
        result = CURLE_OK
#27 0x00005555555dd1eb in Curl_conn_cf_connect (cf=0x555555705188, data=0x5555556e8948, 
    blocking=false, done=0x7fffffffd637) at cfilters.c:296
No locals.
#28 0x000055555563be24 in cf_hc_baller_connect (b=0x5555557050d0, cf=0x5555556e88e8, 
    data=0x5555556e8948, done=0x7fffffffd637) at cf-https-connect.c:135
        save = 0x0
#29 0x000055555563c509 in cf_hc_connect (cf=0x5555556e88e8, data=0x5555556e8948, 
    blocking=false, done=0x7fffffffd637) at cf-https-connect.c:276
        ctx = 0x5555557050a8
        now = {tv_sec = 10195221, tv_usec = 343405}
        result = CURLE_OK
        __PRETTY_FUNCTION__ = "cf_hc_connect"
#30 0x00005555555dd457 in Curl_conn_connect (data=0x5555556e8948, sockindex=0, 
    blocking=false, done=0x7fffffffd637) at cfilters.c:351
        cf = 0x5555556e88e8
        result = CURLE_OK
        __PRETTY_FUNCTION__ = "Curl_conn_connect"
#31 0x00005555555a4ebe in multi_runsingle (multi=0x5555556e7638, nowp=0x7fffffffd760, 
    data=0x5555556e8948) at multi.c:2100
        stream_error = false
        msg = 0x0
        connected = false
        async = false
        protocol_connected = false
        dophase_done = false
        done = false
        rc = CURLM_OK
        result = CURLE_OK
        recv_timeout_ms = 93824993892984
        send_timeout_ms = 93823560924525
        control = 1433424040
        __PRETTY_FUNCTION__ = "multi_runsingle"
#32 0x00005555555a6606 in curl_multi_perform (multi=0x5555556e7638, 
    running_handles=0x7fffffffd7c4) at multi.c:2740
        datanext = 0x0
        result = CURLM_OK
        nosig = false
        pipe_st = {old_pipe_act = {__sigaction_handler = {sa_handler = 0x1, 
              sa_sigaction = 0x1}, sa_mask = {__val = {4096, 5, 0, 0, 4294967296, 
                93824994005248, 93824994005160, 8589923792, 1, 5, 2, 140737488344544, 
                140737344514611, 10195221, 140733193388033, 2}}, sa_flags = 335544320, 
            sa_restorer = 0x7ffff7613510 <__restore_rt>}, no_signal = false}
        data = 0x5555556e8948
        returncode = CURLM_OK
        t = 0x0
        now = {tv_sec = 10195221, tv_usec = 343405}
        __PRETTY_FUNCTION__ = "curl_multi_perform"
#33 0x0000555555595233 in easy_transfer (multi=0x5555556e7638) at easy.c:679
        still_running = 0
        done = false
        mcode = CURLM_OK
        result = CURLE_OK
#34 0x0000555555595467 in easy_perform (data=0x5555556e8948, events=false) at easy.c:769
        multi = 0x5555556e7638
        mcode = CURLM_OK
        result = CURLE_OK
        pipe_st = {old_pipe_act = {__sigaction_handler = {sa_handler = 0x1, 
              sa_sigaction = 0x1}, sa_mask = {__val = {4096, 93824993872768, 31, 
                140737488344800, 93824992521554, 140737488346024, 93824993354456, 
                93824993892792, 93824993892792, 0, 93824993892376, 140737488344912, 
                93824992576528, 93824993349616, 5, 140733193725499}}, sa_flags = 335544320, 
            sa_restorer = 0x7ffff7613510 <__restore_rt>}, no_signal = false}
#35 0x00005555555954b1 in curl_easy_perform (data=0x5555556e8948) at easy.c:788
No locals.
#36 0x0000555555587eda in serial_transfers (global=0x7fffffffda10, share=0x5555556e40e8)
    at tool_operate.c:2689
        retry = false
        delay_ms = 93824993872544
        bailout = false
        start = {tv_sec = 10195387, tv_usec = 318836}
        returncode = CURLE_OK
        result = CURLE_OK
        per = 0x5555556e4c48
        added = true
#37 0x00005555555884a8 in run_all_transfers (global=0x7fffffffda10, share=0x5555556e40e8, 
    result=CURLE_OK) at tool_operate.c:2880
        orig_noprogress = false
        orig_isatty = false
        per = 0x556e40e8
#38 0x0000555555588853 in operate (global=0x7fffffffda10, argc=3, argv=0x7fffffffdba8)
    at tool_operate.c:2996
        count = 1
        operation = 0x0
        share = 0x5555556e40e8
        res = PARAM_OK
        result = CURLE_OK
        first_arg = 0x0
#39 0x000055555557e615 in main (argc=3, argv=0x7fffffffdba8) at tool_main.c:272
        result = CURLE_OK
        global = {showerror = false, silent = false, noprogress = true, isatty = true, 
          trace_dump = 0x0, trace_stream = 0x0, trace_fopened = false, 
          tracetype = TRACE_NONE, tracetime = false, traceids = false, progressmode = 0, 
          libcurl = 0x0, fail_early = false, styled_output = true, ms_per_transfer = 0, 
          test_event_based = false, parallel = false, parallel_max = 50, 
          parallel_connect = false, help_category = 0x0, variables = 0x0, 
          first = 0x5555556e2268, current = 0x5555556e2268, last = 0x5555556e2268}
(gdb) 

</details>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant