webrtc-rs / webrtc

A pure Rust implementation of WebRTC
https://webrtc.rs
Apache License 2.0
4.08k stars 363 forks source link

WebRTC 0.11 triggers a panic with "no process-level CryptoProvider available -- call CryptoProvider::install_default() before this point" #567

Closed paultag closed 4 months ago

paultag commented 4 months ago

WebRTC 0.10 works fine -- but when I've upgraded to 0.11, there's a crash due to the changed with the rusttls backend.

We worked around this by installing our own crypto backend; but I didn't see anything in the Examples about this, so I figured I'd open an issue that can be closed as "works as intended" if this is part of the new API

(for those at home, something like)

rustls::crypto::ring::default_provider().install_default().unwrap()
Backtrace Specifically, from a spawned task, the WebRTC negotiation code crashes with `no process-level CryptoProvider available -- call CryptoProvider::install_default() before this point`. This happens right after the rtc ice connection state changed to connected, so perhaps part of the changed DTLS codepath. ``` thread 'tokio-runtime-worker' panicked at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustls-0.23.5/src/crypto/mod.rs:260:14: no process-level CryptoProvider available -- call CryptoProvider::install_default() before this point stack backtrace: 0: 0x559b6886321c - std::backtrace_rs::backtrace::libunwind::trace::ha637c64ce894333a at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5 1: 0x559b6886321c - std::backtrace_rs::backtrace::trace_unsynchronized::h47f62dea28e0c88d at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x559b6886321c - std::sys_common::backtrace::_print_fmt::h9eef0abe20ede486 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/sys_common/backtrace.rs:67:5 3: 0x559b6886321c - ::fmt::hed7f999df88cc644 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/sys_common/backtrace.rs:44:22 4: 0x559b688919a0 - core::fmt::rt::Argument::fmt::h1539a9308b8d058d at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/fmt/rt.rs:142:9 5: 0x559b688919a0 - core::fmt::write::h3a39390d8560d9c9 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/fmt/mod.rs:1120:17 6: 0x559b6885fa0f - std::io::Write::write_fmt::h5fc9997dfe05f882 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/io/mod.rs:1762:15 7: 0x559b68863004 - std::sys_common::backtrace::_print::h894006fb5c6f3d45 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/sys_common/backtrace.rs:47:5 8: 0x559b68863004 - std::sys_common::backtrace::print::h23a2d212c6fff936 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/sys_common/backtrace.rs:34:9 9: 0x559b688647b7 - std::panicking::default_hook::{{closure}}::h8a1d2ee00185001a 10: 0x559b6886451f - std::panicking::default_hook::h6038f2eba384e475 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:292:9 11: 0x559b68864c38 - std::panicking::rust_panic_with_hook::h2b5517d590cab22e at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:779:13 12: 0x559b68864b1e - std::panicking::begin_panic_handler::{{closure}}::h233112c06e0ef43e at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:657:13 13: 0x559b688636e6 - std::sys_common::backtrace::__rust_end_short_backtrace::h6e893f24d7ebbff8 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/sys_common/backtrace.rs:170:18 14: 0x559b68864882 - rust_begin_unwind at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:645:5 15: 0x559b63e01ab5 - core::panicking::panic_fmt::hbf0e066aabfa482c at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/panicking.rs:72:14 16: 0x559b63e01a73 - core::panicking::panic_display::h68e6012a1c287ca5 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/panicking.rs:178:5 17: 0x559b63e01a73 - core::panicking::panic_str::h1ca8e3b0d2d70f80 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/panicking.rs:152:5 18: 0x559b63e01a73 - core::option::expect_failed::h1ae4bac6b7606972 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/option.rs:1985:5 19: 0x559b681be6e2 - core::option::Option::expect::h38f8a1a4978956ee at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/option.rs:894:21 20: 0x559b681c388a - rustls::crypto::CryptoProvider::get_default_or_install_from_crate_features::hf5a6e4abd747d557 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustls-0.23.5/src/crypto/mod.rs:259:24 21: 0x559b681b3e62 - rustls::webpki::server_verifier::WebPkiServerVerifier::builder::hc259cb972fedd45f at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustls-0.23.5/src/webpki/server_verifier.rs:140:24 22: 0x559b67fc643b - webrtc_dtls::conn::DTLSConn::new::{{closure}}::hdd69d2e69859251c at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/webrtc-dtls-0.10.0/src/conn/mod.rs:240:35 23: 0x559b64c391bb - webrtc::dtls_transport::RTCDtlsTransport::start::{{closure}}::h22f09ac156418457 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/webrtc-0.11.0/src/dtls_transport/mod.rs:386:18 24: 0x559b64942b6a - webrtc::peer_connection::peer_connection_internal::PeerConnectionInternal::start_transports::{{closure}}::h4ce5cb37e5ae8a64 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/webrtc-0.11.0/src/peer_connection/peer_connection_internal.rs:633:14 25: 0x559b640c0437 - webrtc::peer_connection::RTCPeerConnection::set_remote_description::{{closure}}::{{closure}}::{{closure}}::hfdd540c3ffab1dde at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/webrtc-0.11.0/src/peer_connection/mod.rs:1592:34 26: 0x559b67b536d5 - as core::future::future::Future>::poll::hb35c4e13e40cfa30 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/future/future.rs:125:9 27: 0x559b67a10e58 - webrtc::peer_connection::operation::Operations::start::{{closure}}::h877e7ea58af8400d at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/webrtc-0.11.0/src/peer_connection/operation/mod.rs:124:34 28: 0x559b67a1075e - webrtc::peer_connection::operation::Operations::new::{{closure}}::h2ac205395a907aa2 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/webrtc-0.11.0/src/peer_connection/operation/mod.rs:57:60 29: 0x559b6791f7c0 - as core::future::future::Future>::poll::hb946ab4c0e99359a at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/trace/mod.rs:263:13 30: 0x559b679698ce - as core::future::future::Future>::poll::h1b6ebd4a66386c57 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-0.1.40/src/instrument.rs:321:9 31: 0x559b67a005dd - tokio::runtime::task::core::Core::poll::{{closure}}::h0988cd53ded32eff at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/core.rs:328:17 32: 0x559b679fe2d0 - tokio::loom::std::unsafe_cell::UnsafeCell::with_mut::hd5414b184521d8a2 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/loom/std/unsafe_cell.rs:16:9 33: 0x559b679fe2d0 - tokio::runtime::task::core::Core::poll::h6a8bbb2922e13b24 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/core.rs:317:13 34: 0x559b67a42ae5 - tokio::runtime::task::harness::poll_future::{{closure}}::hf26daaf501694ee6 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/harness.rs:485:19 35: 0x559b67939d17 - as core::ops::function::FnOnce<()>>::call_once::h214d3f50b077ba87 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/panic/unwind_safe.rs:272:9 36: 0x559b67a64959 - std::panicking::try::do_call::hd3199acd5dac717f at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:552:40 37: 0x559b67a6c72b - __rust_try 38: 0x559b67a5fa93 - std::panicking::try::ha22b26ace07dc261 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:516:19 39: 0x559b6792534e - std::panic::catch_unwind::h1a55d12bf749fc99 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panic.rs:142:14 40: 0x559b67a3aaaf - tokio::runtime::task::harness::poll_future::h6623bb0c48c98e4b at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/harness.rs:473:18 41: 0x559b67a466af - tokio::runtime::task::harness::Harness::poll_inner::hcc94067f455b6b1e at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/harness.rs:208:27 42: 0x559b67a4f127 - tokio::runtime::task::harness::Harness::poll::ha852526b4e0a29dd at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/harness.rs:153:15 43: 0x559b67a22770 - tokio::runtime::task::raw::poll::h8d2d3ec13d9cd349 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/raw.rs:271:5 44: 0x559b68408b0b - tokio::runtime::task::raw::RawTask::poll::h73d32d4446e2dd0b at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/raw.rs:201:18 45: 0x559b68464b15 - tokio::runtime::task::LocalNotified::run::h5a10536433a50655 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/mod.rs:416:9 46: 0x559b684b0831 - tokio::runtime::scheduler::multi_thread::worker::Context::run_task::{{closure}}::h9a62e58e2924d3c0 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/scheduler/multi_thread/worker.rs:639:17 47: 0x559b684b0046 - tokio::runtime::coop::with_budget::h6479bf04f8351340 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/coop.rs:107:5 48: 0x559b684b0046 - tokio::runtime::coop::budget::h3b62822ac84243c6 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/coop.rs:73:5 49: 0x559b684b0046 - tokio::runtime::scheduler::multi_thread::worker::Context::run_task::h084d61f18404e43a at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/scheduler/multi_thread/worker.rs:575:9 50: 0x559b684af6fb - tokio::runtime::scheduler::multi_thread::worker::Context::run::he9ba376a7167fa78 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/scheduler/multi_thread/worker.rs:526:24 51: 0x559b684af354 - tokio::runtime::scheduler::multi_thread::worker::run::{{closure}}::{{closure}}::h98fcd03aed98926a at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/scheduler/multi_thread/worker.rs:491:21 52: 0x559b684a6f3f - tokio::runtime::context::scoped::Scoped::set::h37f57db6280827bc at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/context/scoped.rs:40:9 53: 0x559b684903a1 - tokio::runtime::context::set_scheduler::{{closure}}::hf9b3be1f75f8f83c at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/context.rs:176:26 54: 0x559b684634e2 - std::thread::local::LocalKey::try_with::he5bf6cd8484478d2 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/thread/local.rs:270:16 55: 0x559b68460e07 - std::thread::local::LocalKey::with::haf7763c2029de62f at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/thread/local.rs:246:9 56: 0x559b684902d2 - tokio::runtime::context::set_scheduler::he203274491c2c83f at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/context.rs:176:9 57: 0x559b684af255 - tokio::runtime::scheduler::multi_thread::worker::run::{{closure}}::h8b6e9af4666b9a10 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/scheduler/multi_thread/worker.rs:486:9 58: 0x559b684cf080 - tokio::runtime::context::runtime::enter_runtime::hc838255d5072cd8a at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/context/runtime.rs:65:16 59: 0x559b684aefde - tokio::runtime::scheduler::multi_thread::worker::run::h8d5fc2b6ca6e1f75 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/scheduler/multi_thread/worker.rs:478:5 60: 0x559b684aee57 - tokio::runtime::scheduler::multi_thread::worker::Launch::launch::{{closure}}::hfa1cad26eb8b9340 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/scheduler/multi_thread/worker.rs:447:45 61: 0x559b684347f4 - as core::future::future::Future>::poll::hec86c7ab4c847c95 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/blocking/task.rs:42:21 62: 0x559b68482e1e - as core::future::future::Future>::poll::hd8a953380224e86c at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-0.1.40/src/instrument.rs:321:9 63: 0x559b684058bd - tokio::runtime::task::core::Core::poll::{{closure}}::h67c28d747b8b5549 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/core.rs:328:17 64: 0x559b68405270 - tokio::loom::std::unsafe_cell::UnsafeCell::with_mut::h9a3ad0c75ae64ff0 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/loom/std/unsafe_cell.rs:16:9 65: 0x559b68405270 - tokio::runtime::task::core::Core::poll::h06794d58673b5867 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/core.rs:317:13 66: 0x559b6849b525 - tokio::runtime::task::harness::poll_future::{{closure}}::hecd8308869b35241 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/harness.rs:485:19 67: 0x559b6840cf87 - as core::ops::function::FnOnce<()>>::call_once::h0444eb6f668e2cf1 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/panic/unwind_safe.rs:272:9 68: 0x559b68428489 - std::panicking::try::do_call::hca879bee14cb3910 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:552:40 69: 0x559b6842bd3b - __rust_try 70: 0x559b684279e3 - std::panicking::try::hc69523b19a618a14 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:516:19 71: 0x559b6840d5ae - std::panic::catch_unwind::h69e6145f15166f95 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panic.rs:142:14 72: 0x559b6849a7af - tokio::runtime::task::harness::poll_future::h93479695b81e1ce1 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/harness.rs:473:18 73: 0x559b68497bcf - tokio::runtime::task::harness::Harness::poll_inner::h7913972f8fa4599d at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/harness.rs:208:27 74: 0x559b68497507 - tokio::runtime::task::harness::Harness::poll::h00e20c1aaf9c299e at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/harness.rs:153:15 75: 0x559b68408d80 - tokio::runtime::task::raw::poll::h30d755e4feed8148 at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/raw.rs:271:5 76: 0x559b68408b0b - tokio::runtime::task::raw::RawTask::poll::h73d32d4446e2dd0b at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/raw.rs:201:18 77: 0x559b68464c0d - tokio::runtime::task::UnownedTask::run::h044b5ead131277dd at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/task/mod.rs:453:9 78: 0x559b6841ae76 - tokio::runtime::blocking::pool::Task::run::h465b496d15405c2f at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/blocking/pool.rs:159:9 79: 0x559b68425f39 - tokio::runtime::blocking::pool::Inner::run::h47ce20f8130827bc at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/blocking/pool.rs:513:17 80: 0x559b68425c84 - tokio::runtime::blocking::pool::Spawner::spawn_thread::{{closure}}::h765dc8020a524c7b at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.36.0/src/runtime/blocking/pool.rs:471:13 81: 0x559b68460846 - std::sys_common::backtrace::__rust_begin_short_backtrace::hddb6728b02fce294 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/sys_common/backtrace.rs:154:18 82: 0x559b68473db2 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h13dc6f8d0e947891 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/thread/mod.rs:529:17 83: 0x559b6840d242 - as core::ops::function::FnOnce<()>>::call_once::hbd185861996ee79b at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/panic/unwind_safe.rs:272:9 84: 0x559b68428112 - std::panicking::try::do_call::h3a325329bed5556e at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:552:40 85: 0x559b6842bd3b - __rust_try 86: 0x559b68427377 - std::panicking::try::h67ce95c5bae10321 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panicking.rs:516:19 87: 0x559b68473bfa - std::panic::catch_unwind::h6c93e7b02c693c4d at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/panic.rs:142:14 88: 0x559b68473bfa - std::thread::Builder::spawn_unchecked_::{{closure}}::h115e5d3fe781aab1 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/thread/mod.rs:528:30 89: 0x559b68473ff7 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h92681a280ee32d1f at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/core/src/ops/function.rs:250:5 90: 0x559b68868a75 - as core::ops::function::FnOnce>::call_once::hc7eafaff61e32df9 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/alloc/src/boxed.rs:2007:9 91: 0x559b68868a75 - as core::ops::function::FnOnce>::call_once::h6ba4a5de48dd2304 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/alloc/src/boxed.rs:2007:9 92: 0x559b68868a75 - std::sys::unix::thread::Thread::new::thread_start::he469335aef763e45 at /rustc/82e1608dfa6e0b5569232559e3d385fea5a93112/library/std/src/sys/unix/thread.rs:108:17 2024-05-09T19:10:07.128733Z INFO webrtc_mdns::conn: Received query result at /home/paultag/.cargo/registry/src/index.crates.io-6f17d22bba15001f/webrtc-mdns-0.7.0/src/conn/mod.rs:202 93: 0x7fedcd19a45c - start_thread at ./nptl/pthread_create.c:444:8 94: 0x7fedcd21abbc - __GI___clone3 at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81 95: 0x0 - ```
paultag commented 4 months ago

seems like maybe this is all intentional and working as intended; closing