Skip to content
Snippets Groups Projects
Open tor-chanmgr: Panic when bootstrapping in a censored environment
  • View options
  • tor-chanmgr: Panic when bootstrapping in a censored environment

  • View options
  • Open Issue created by Clara Engler

    See onionmasq#110

    When we run arti in censored environment1, it will periodically spam stderr with the following:

    thread 'tokio-runtime-worker' panicked at /Users/cve/.cargo/git/checkouts/arti-ad20a813413c4843/2ccad1b/crates/tor-chanmgr/src/mgr/state.rs:616:13:
    Dropped the 'PendingChannelHandle' without removing the channel
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    thread 'tokio-runtime-worker' panicked at /Users/cve/.cargo/git/checkouts/arti-ad20a813413c4843/2ccad1b/crates/tor-chanmgr/src/mgr/state.rs:616:13:
    Dropped the 'PendingChannelHandle' without removing the channel
    thread 'tokio-runtime-worker' panicked at /Users/cve/.cargo/git/checkouts/arti-ad20a813413c4843/2ccad1b/crates/tor-chanmgr/src/mgr/state.rs:616:13:
    Dropped the 'PendingChannelHandle' without removing the channel
    thread 'tokio-runtime-worker' panicked at /Users/cve/.cargo/git/checkouts/arti-ad20a813413c4843/2ccad1b/crates/tor-chanmgr/src/mgr/state.rs:616:13:
    Dropped the 'PendingChannelHandle' without removing the channel

    Personally, I think that a panic is sort of harsh for such a condition, as running Tor in a blocked environment is anything but an edge case.

    I have run this on macOS Sequoia on Apple Silicon. The code I have used is the following (ignore the unused imports, I stripped out the irrelevant parts of a larger piece of code):

    use std::time::Duration;
    
    use anyhow::Result;
    use arti_client::{TorClient, TorClientConfig};
    use tokio::io::{AsyncReadExt, AsyncWriteExt};
    use tokio_stream::StreamExt;
    use tor_chanmgr::ConnStatusEvents;
    
    #[tokio::main]
    async fn main() -> Result<()> {
        let cfg = TorClientConfig::default();
        let tor_client = TorClient::create_bootstrapped(cfg).await?;
        tokio::time::sleep(Duration::from_secs(30)).await;
    
        Ok(())
    }
    1. I blocked all IPv4 and IPv6 addresses from the consensus on firewall level

    • Merge request
    • Branch

    Linked items ... 0

  • Activity

    • All activity
    • Comments only
    • History only
    • Newest first
    • Oldest first
    Loading Loading Loading Loading Loading Loading Loading Loading Loading Loading