Skip to content

Async GraphQL DataLoader Causes Compiler Panic During CodeGen #96962

Closed
@cadillion

Description

@cadillion

Code

Hunted down and commented out the offending code and got the app to recompile. After uncommenting again it then worked fine. Can't reproduce since.

use std::collections::HashMap;
use std::sync::Arc;

use actix_web::{guard, rt::spawn, web, App, HttpRequest, HttpResponse, HttpServer};
use anyhow::Result;
use async_graphql::dataloader::{DataLoader, Loader};
use async_graphql::http::{playground_source, GraphQLPlaygroundConfig};
use async_graphql::{
    ComplexObject, Context, EmptyMutation, EmptySubscription, Error, InputValueError,
    InputValueResult, MergedObject, Object, Scalar, ScalarType, Schema, SimpleObject, Value,
};
use async_graphql_actix_web::{GraphQLRequest, GraphQLResponse};
use chrono::{DateTime, Utc};
use paste::paste;
use lazy_static::lazy_static;
use sqlx::pool::Pool;
use sqlx::postgres::{PgPoolOptions, Postgres as Pg};
use uuid::Uuid;

pub type AppSchema = Schema<Query, EmptyMutation, EmptySubscription>;

trait Optional<T> {
    fn unwrap_or(self, default: T) -> T;
}

// Convenience trait to enable arbitrary swapping of Option<Uuid> and Uuid
impl Optional<Uuid> for Uuid {
    fn unwrap_or(self, _: Uuid) -> Uuid {
        self
    }
}

lazy_static! {
    static ref DATABASE_URL: String =
        std::env::var("DATABASE_URL").expect("Can't read Postgres database address");
}

pub struct Postgres {
    pub pool: Pool<Pg>,
}

impl Postgres {
    pub async fn new() -> Result<Self> {
        let pool = PgPoolOptions::new()
            .max_connections(5)
            .connect(DATABASE_URL.as_str())
            .await?;

        Ok(Self { pool })
    }
}

pub struct Repository {
    pub pg_port: Postgres,
}

impl Repository {
    pub async fn new() -> anyhow::Result<Repository, Error> {
        let pg_port = Self::pg_connect().await?;

        Ok(Repository { pg_port })
    }

    async fn pg_connect() -> anyhow::Result<Postgres, Error> {
        let connection = Postgres::new().await?;
        Ok(connection)
    }
}

#[derive(sqlx::FromRow, SimpleObject, Debug, Clone)]
#[graphql(complex)]
pub struct Suitability {
    pub uuid: Uuid,
    pub user_id: Uuid,
    pub answer_id: Uuid,
    created_at: DateTime<Utc>,
    updated_at: DateTime<Utc>,
}

#[derive(sqlx::FromRow, SimpleObject, Debug, Clone)]
#[graphql(complex)]
pub struct SuitabilityAnswer {
    pub uuid: Uuid,
    pub question_id: Uuid,
    answer_order: i32,
    answer: String,
    pub is_valid: bool,
    created_at: DateTime<Utc>,
    updated_at: DateTime<Utc>,
}

#[derive(sqlx::FromRow, SimpleObject, Debug, Clone)]
#[graphql(complex)]
pub struct SuitabilityQuestion {
    pub uuid: Uuid,
    question_order: i32,
    question: String,
    tooltip: Option<String>,
    pub is_valid: bool,
    created_at: DateTime<Utc>,
    updated_at: DateTime<Utc>,
}

#[derive(sqlx::FromRow, Clone, Debug, SimpleObject)]
#[graphql(complex)]
pub struct User {
    pub uuid: Uuid,
    username: String,
    email: CiText,
    password: String,
    created_at: DateTime<Utc>,
    updated_at: DateTime<Utc>,
}

#[derive(sqlx::Type, Clone, Debug)]
#[sqlx(type_name = "citext")]
pub struct CiText(String);

#[Scalar]
impl ScalarType for CiText {
    fn parse(value: Value) -> InputValueResult<Self> {
        match value {
            Value::String(s) => Ok(CiText(s)),
            _ => Err(InputValueError::expected_type(value)),
        }
    }

    fn is_valid(value: &Value) -> bool {
        matches!(value, Value::String(_))
    }

    fn to_value(&self) -> Value {
        let CiText(ref s) = self;
        Value::String(s.clone())
    }
}

macro_rules! impl_data_loaders {
    ($($schema:ty[$($entity:ty[$($search:ident),*][$($child:ty[$fkey:ident, $pkey:ident, $fun:ident]),*]),+]),+) => {
        paste! {
            impl Postgres {
                $($(
                    #[doc = "Returns a list of all rows in the " [< $entity:snake:lower:plural >] " table."]
                    pub async fn [< $entity:snake:lower:plural >](&self, limit: Option<usize>, offset: Option<usize>, order_by: Option<Vec<String>> ) -> Result<Vec<$entity>> {
                        let list = sqlx::query_as::<_, $entity>(
                                &format!(
                                    concat!(
                                        "SELECT * FROM ",
                                        stringify!([< $schema:snake:lower >].[< $entity:snake:lower:plural >]),
                                        " ORDER BY {} LIMIT {} OFFSET {}"
                                    ),
                                    order_by
                                        .unwrap_or(vec!["created_at".to_string()])
                                        .iter()
                                        .fold(String::new(), |acc, string| match acc.is_empty() {
                                            true => format!("\"{}\" ASC", string),
                                            _ => format!("{}, \"{}\" ASC", acc, string),
                                        }),
                                    match limit {
                                        Some(i) => i.to_string(),
                                        None => "NULL".to_string(),
                                    },
                                    offset.unwrap_or(0),
                                )
                            )
                            .fetch_all(&self.pool)
                            .await?;

                        Ok(list)
                    }

                    $(
                        #[doc = "Returns a list of all rows in the " [< $entity:snake:lower:plural >] " table for a set of IDs"]
                        pub async fn [< $entity:snake:lower:plural _by_ $search:snake:lower:plural >](&self, ids: Vec<String>) -> Result<Vec<$entity>> {
                            let sql = format!(
                                "SELECT * FROM {} WHERE {} IN ('{}')",
                                stringify!([< $schema:snake:lower >].[< $entity:snake:lower:plural >]),
                                stringify!($search),
                                ids.join("','"),
                            );

                            let list = sqlx::query_as::<_, $entity>(&sql)
                                .fetch_all(&self.pool)
                                .await?;

                            Ok(list)
                        }
                    )*
                )+)+
            }

            $($(
                #[derive(Default)]
                pub struct [< $entity:camel Query >];

                #[Object]
                impl [< $entity:camel Query >] {
                    async fn [< $entity:snake:lower:plural >](&self, ctx: &Context<'_>, limit: Option<usize>, offset: Option<usize>, order_by: Option<Vec<String>>) -> Result<Vec<$entity>, Error> {
                        let config = ctx.data::<Arc<Repository>>()?;
                        let v = config.pg_port.[< $entity:snake:lower:plural >](limit, offset, order_by).await?;
                        Ok(v)
                    }
                }

                #[ComplexObject]
                impl $entity {
                    $(
                        async fn [< $fun >](&self, ctx: &Context<'_>) -> async_graphql::Result<Vec<$child>> {
                            let data_loader = ctx
                                .data::<DataLoader<[< $entity:camel $child:camel $fkey:camel $pkey:camel Loader >]>>()?;

                            let _id = self
                                .$fkey
                                .unwrap_or(Uuid::nil())
                                .to_string()
                                .parse::<Uuid>()?;

                            let v = data_loader.load_one(_id).await?;

                            match v {
                                Some(vec) => Ok(vec),
                                None => Ok(Vec::<$child>::new()),
                            }
                        }
                    )*
                }

                $(
                    pub struct [< $entity:camel $child:camel $fkey:camel $pkey:camel Loader >] {
                        pub connection: Arc<Repository>,
                    }

                    #[async_trait::async_trait]
                    impl Loader<Uuid> for [< $entity:camel $child:camel $fkey:camel $pkey:camel Loader >] {
                        type Value = Vec<$child>;
                        type Error = Error;

                        async fn load(
                            &self,
                            keys: &[Uuid],
                        ) -> Result<HashMap<Uuid, Self::Value>, Self::Error> {
                            let keys_as_strings: Vec<String> = keys
                                .iter()
                                .map(|k| k.to_string())
                                .collect();

                            let vec = self
                                .connection
                                .pg_port
                                .[< $child:snake:lower:plural _by_ $pkey s >](keys_as_strings)
                                .await?;

                            let mut m = HashMap::<Uuid, Vec<$child>>::new();

                            for v in vec {
                                let option_id = v
                                    .$pkey
                                    .unwrap_or(Uuid::nil());

                                m.entry(option_id)
                                    .or_insert_with(Vec::new)
                                    .push(v);
                            }

                            Ok(m)
                        }
                    }
                )*
            )+)+

            #[derive(MergedObject, Default)]
            pub struct Query(
                $($(
                    [< $entity:camel Query >],
                )+)+
            );

            // Spawn processes to load data concurrently from reference-counted shared connection
            pub fn create_schema_with_context(connection: Repository) -> AppSchema {
                let pool = Arc::new(connection);

                $($($(
                    let [< $entity:snake:lower _ $child:snake:lower _ $fkey:snake:lower _ $pkey:snake:lower _loader >] = DataLoader::new(
                        [< $entity:camel $child:camel $fkey:camel $pkey:camel Loader >] {
                            connection: Arc::clone(&pool),
                        },
                        spawn,
                    )
                    .max_batch_size(250);
                )*)+)+

                Schema::build(Query::default(), EmptyMutation, EmptySubscription)
                    // .limit_depth(3).limit_complexity(15) // limits are commented out, because otherwise introspection query won't work
                    .data(pool)
                    $($($(.data([< $entity:snake:lower _ $child:snake:lower _ $fkey:snake:lower _ $pkey:snake:lower _loader >]))*)+)+
                    .finish()
            }
        }
    }
}

impl_data_loaders! {
    Public[
        Suitability[uuid, user_id, answer_id][
            SuitabilityAnswer[answer_id, uuid, suitability_answer],
            User[user_id, uuid, user]
        ],
        SuitabilityAnswer[uuid, question_id, is_valid][
            Suitability[uuid, answer_id, suitability],
            //*******************************************
            // The next line is the line it choked on
            //*******************************************
            SuitabilityQuestion[question_id, uuid, suitability_question]
        ],
        SuitabilityQuestion[uuid, is_valid][
            SuitabilityAnswer[uuid, question_id, suitability_answers]
        ]
    ],
    Private[
        User[uuid, email, username][
            Suitability[uuid, user_id, suitability]
        ]
    ]
}

pub struct Config {
    pub addr: std::net::SocketAddr,
    pub state_data: web::Data<AppState>,
}

pub struct AppState {
    pub schema: AppSchema,
}

impl Config {
    pub async fn new() -> anyhow::Result<Config> {
        let port: u16 = std::env::var("PORT")
            .ok()
            .and_then(|p| p.parse().ok())
            .unwrap_or(3003);
        let addr = std::net::SocketAddr::from(([0, 0, 0, 0], port));

        // Create app state data to be available in all web transactions
        let state = create_app_state().await?;
        let state_data = web::Data::new(state);

        let config = Config { addr, state_data };
        Ok(config)
    }
}

pub async fn create_app_state() -> anyhow::Result<AppState> {
    let app_state = AppState {
        schema: create_schema_with_context(
            Repository::new()
                .await
                .expect("Could not connect to postgres"),
        ),
    };
    Ok(app_state)
}

async fn index(req: GraphQLRequest, state: web::Data<AppState>) -> GraphQLResponse {
    let response = state.schema.execute(req.into_inner()).await;

    response.into()
}

async fn index_playground() -> HttpResponse {
    HttpResponse::Ok()
        .content_type("text/html; charset=utf-8")
        .body(playground_source(
            GraphQLPlaygroundConfig::new("/").subscription_endpoint("/"),
        ))
}

pub fn configure_service(cfg: &mut web::ServiceConfig) {
    cfg.service(
        web::resource("/")
            .route(web::post().to(index))
            .route(web::get().to(index_playground)),
    );
}

#[actix_web::main]
async fn main() -> anyhow::Result<()> {
    // used only in local environment. stage + prod environments get all their secrets via process env vars
    dotenv::from_filename(".env.local").ok();

    #[cfg(debug)]
    env_logger::init();

    let Config { addr, state_data } = Config::new().await?;

    HttpServer::new(move || {
        App::new()
            .configure(configure_service)
            .app_data(state_data.clone())
    })
    .bind(addr)?
    .run()
    .await?;

    Ok(())
}

Meta

rustc --version --verbose:

rustc 1.58.1 (db9d1b20b 2022-01-20)
binary: rustc
commit-hash: db9d1b20bba1968c1ec1fc49616d4742c1725b4b
commit-date: 2022-01-20
host: aarch64-unknown-linux-gnu
release: 1.58.1
LLVM version: 13.0.0

Error output

  thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/compiler/rustc_hir/src/definitions.rs:452:14
  
  error: internal compiler error: unexpected panic
  
  note: the compiler unexpectedly panicked. this is a bug.
  
  note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.58.1 (db9d1b20b 2022-01-20) running on aarch64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental --crate-type lib

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `for<'r, 's, 't0> {core::future::ResumeTy, &'r async_graphql::dataloader::DataLoader<adapters::graphql_queries::SuitabilityAnswerSuitabilityQuestionQuestionIdUuidLoader>, uuid::Uuid, &'s uuid::Uuid, core::iter::sources::once::Once<uuid::Uuid>, impl core::future::future::Future<Output = core::result::Result<std::collections::hash::map::HashMap<uuid::Uuid, <adapters::graphql_queries::SuitabilityAnswerSuitabilityQuestionQuestionIdUuidLoader as async_graphql::dataloader::Loader<uuid::Uuid>>::Value>, <adapters::graphql_queries::SuitabilityAnswerSuitabilityQuestionQuestionIdUuidLoader as async_graphql::dataloader::Loader<uuid::Uuid>>::Error>>, ()}: core::marker::Send`
#1 [codegen_fulfill_obligation] checking if `core::ops::unsize::CoerceUnsized` fulfills its obligations
#2 [collect_and_partition_mono_items] collect_and_partition_mono_items
#3 [exported_symbols] exported_symbols
end of query stack
Backtrace

stack backtrace:
   0:     0xffff7d87ded4 - std::backtrace_rs::backtrace::libunwind::trace::h93b3238ee24363ff
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0xffff7d87ded4 - std::backtrace_rs::backtrace::trace_unsynchronized::hd0b91c595765251c
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0xffff7d87ded4 - std::sys_common::backtrace::_print_fmt::h30044c15f37f55e5
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/sys_common/backtrace.rs:67:5
   3:     0xffff7d87ded4 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h3e879cfd83c3e738
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/sys_common/backtrace.rs:46:22
   4:     0xffff7d8d4e30 - core::fmt::write::h0d0a553933f27920
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/core/src/fmt/mod.rs:1149:17
   5:     0xffff7d86efe8 - std::io::Write::write_fmt::h6441aebd0d25cafa
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/io/mod.rs:1697:15
   6:     0xffff7d880b88 - std::sys_common::backtrace::_print::h59c3f7ca96dcfa56
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/sys_common/backtrace.rs:49:5
   7:     0xffff7d880b88 - std::sys_common::backtrace::print::he3a1a4c8e3f2b5c5
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/sys_common/backtrace.rs:36:9
   8:     0xffff7d880b88 - std::panicking::default_hook::{{closure}}::h0e439cefcb09f19c
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/panicking.rs:211:50
   9:     0xffff7d880744 - std::panicking::default_hook::h0d25e18a244e112d
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/panicking.rs:228:9
  10:     0xffff7e48b738 - rustc_driver[890932e65b1c519a]::DEFAULT_HOOK::{closure#0}::{closure#0}
  11:     0xffff310f1e7c - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::ha028e4f2893b14cf
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/alloc/src/boxed.rs:1708:9
  12:     0xffff310f2ebc - proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::enter::{{closure}}::{{closure}}::h25167e759e3e5643
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/proc_macro/src/bridge/client.rs:320:21
  13:     0xffff7d88138c - std::panicking::rust_panic_with_hook::he2d8fa5b78d61952
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/panicking.rs:610:17
  14:     0xffff7d880e5c - std::panicking::begin_panic_handler::{{closure}}::h17be8acecdbc2a5f
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/panicking.rs:500:13
  15:     0xffff7d87e38c - std::sys_common::backtrace::__rust_end_short_backtrace::h8cecb3628cc0cdc8
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/sys_common/backtrace.rs:139:18
  16:     0xffff7d880df0 - rust_begin_unwind
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/panicking.rs:498:5
  17:     0xffff7d84c808 - core::panicking::panic_fmt::hffea458b8dc29080
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/core/src/panicking.rs:107:14
  18:     0xffff7d84c78c - core::panicking::panic::h976e19ce9e8078a5
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/core/src/panicking.rs:48:5
  19:     0xffff8292f358 - <rustc_middle[71ee4195a1895a6]::ty::context::TyCtxt>::def_path_hash_to_def_id
  20:     0xffff82a007ac - <rustc_query_system[97bb7d7acedca530]::dep_graph::dep_node::DepNode<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind> as rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepNodeExt>::extract_def_id
  21:     0xffff81d6a8b4 - rustc_query_impl[970b09f12593889e]::query_callbacks::type_of::force_from_dep_node
  22:     0xffff82918ec4 - <rustc_middle[71ee4195a1895a6]::ty::context::TyCtxt as rustc_query_system[97bb7d7acedca530]::dep_graph::DepContext>::try_force_from_dep_node
  23:     0xffff81db4910 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  24:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  25:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  26:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  27:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  28:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  29:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  30:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  31:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  32:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  33:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  34:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  35:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  36:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  37:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  38:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  39:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  40:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  41:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  42:     0xffff81db48e0 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  43:     0xffff81d830ec - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  44:     0xffff81b75cd0 - rustc_query_system[97bb7d7acedca530]::query::plumbing::try_load_from_disk_and_cache_in_memory::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt, rustc_middle[71ee4195a1895a6]::infer::canonical::Canonical<rustc_middle[71ee4195a1895a6]::ty::ParamEnvAnd<rustc_middle[71ee4195a1895a6]::ty::Predicate>>, core[6386174f90089796]::result::Result<rustc_middle[71ee4195a1895a6]::traits::select::EvaluationResult, rustc_middle[71ee4195a1895a6]::traits::select::OverflowError>>
  45:     0xffff81ba5d50 - rustc_query_system[97bb7d7acedca530]::query::plumbing::get_query::<rustc_query_impl[970b09f12593889e]::queries::evaluate_obligation, rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  46:     0xffff81caf404 - <rustc_query_impl[970b09f12593889e]::Queries as rustc_middle[71ee4195a1895a6]::ty::query::QueryEngine>::evaluate_obligation
  47:     0xffff82643b40 - <rustc_infer[83afd82b4c0b1e7f]::infer::InferCtxt as rustc_trait_selection[6dbd9f408411fdb6]::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation
  48:     0xffff82643c80 - <rustc_infer[83afd82b4c0b1e7f]::infer::InferCtxt as rustc_trait_selection[6dbd9f408411fdb6]::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation_no_overflow
  49:     0xffff826722c4 - <rustc_trait_selection[6dbd9f408411fdb6]::traits::fulfill::FulfillProcessor>::process_trait_obligation
  50:     0xffff8266b408 - <rustc_trait_selection[6dbd9f408411fdb6]::traits::fulfill::FulfillProcessor>::progress_changed_obligations
  51:     0xffff826d4d20 - <rustc_data_structures[b6f3ed531bba89d7]::obligation_forest::ObligationForest<rustc_trait_selection[6dbd9f408411fdb6]::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection[6dbd9f408411fdb6]::traits::fulfill::FulfillProcessor, rustc_data_structures[b6f3ed531bba89d7]::obligation_forest::Outcome<rustc_trait_selection[6dbd9f408411fdb6]::traits::fulfill::PendingPredicateObligation, rustc_infer[83afd82b4c0b1e7f]::traits::FulfillmentErrorCode>>
  52:     0xffff8266a360 - <rustc_trait_selection[6dbd9f408411fdb6]::traits::fulfill::FulfillmentContext>::select
  53:     0xffff8266a820 - <rustc_trait_selection[6dbd9f408411fdb6]::traits::fulfill::FulfillmentContext as rustc_infer[83afd82b4c0b1e7f]::traits::engine::TraitEngine>::select_where_possible
  54:     0xffff8266a56c - <rustc_trait_selection[6dbd9f408411fdb6]::traits::fulfill::FulfillmentContext as rustc_infer[83afd82b4c0b1e7f]::traits::engine::TraitEngine>::select_all_or_error
  55:     0xffff827037f8 - rustc_trait_selection[6dbd9f408411fdb6]::traits::codegen::drain_fulfillment_cx_or_panic::<rustc_middle[71ee4195a1895a6]::traits::ImplSource<()>>
  56:     0xffff82617edc - <rustc_infer[83afd82b4c0b1e7f]::infer::InferCtxtBuilder>::enter::<core[6386174f90089796]::result::Result<rustc_middle[71ee4195a1895a6]::traits::ImplSource<()>, rustc_errors[30a485659b0a31e8]::ErrorReported>, rustc_trait_selection[6dbd9f408411fdb6]::traits::codegen::codegen_fulfill_obligation::{closure#0}>
  57:     0xffff82703788 - rustc_trait_selection[6dbd9f408411fdb6]::traits::codegen::codegen_fulfill_obligation
  58:     0xffff81de14e8 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[71ee4195a1895a6]::ty::context::TyCtxt, (rustc_middle[71ee4195a1895a6]::ty::ParamEnv, rustc_middle[71ee4195a1895a6]::ty::sty::Binder<rustc_middle[71ee4195a1895a6]::ty::sty::TraitRef>), core[6386174f90089796]::result::Result<rustc_middle[71ee4195a1895a6]::traits::ImplSource<()>, rustc_errors[30a485659b0a31e8]::ErrorReported>>
  59:     0xffff81c85898 - rustc_data_structures[b6f3ed531bba89d7]::stack::ensure_sufficient_stack::<(core[6386174f90089796]::result::Result<rustc_middle[71ee4195a1895a6]::traits::ImplSource<()>, rustc_errors[30a485659b0a31e8]::ErrorReported>, rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepNodeIndex), rustc_query_system[97bb7d7acedca530]::query::plumbing::execute_job<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt, (rustc_middle[71ee4195a1895a6]::ty::ParamEnv, rustc_middle[71ee4195a1895a6]::ty::sty::Binder<rustc_middle[71ee4195a1895a6]::ty::sty::TraitRef>), core[6386174f90089796]::result::Result<rustc_middle[71ee4195a1895a6]::traits::ImplSource<()>, rustc_errors[30a485659b0a31e8]::ErrorReported>>::{closure#3}>
  60:     0xffff81bbd518 - rustc_query_system[97bb7d7acedca530]::query::plumbing::get_query::<rustc_query_impl[970b09f12593889e]::queries::codegen_fulfill_obligation, rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
  61:     0xffff81caec54 - <rustc_query_impl[970b09f12593889e]::Queries as rustc_middle[71ee4195a1895a6]::ty::query::QueryEngine>::codegen_fulfill_obligation
  62:     0xffff80d5221c - rustc_monomorphize[a7b190e3b8fd0f39]::custom_coerce_unsize_info
  63:     0xffff80d675c0 - <rustc_monomorphize[a7b190e3b8fd0f39]::collector::MirNeighborCollector as rustc_middle[71ee4195a1895a6]::mir::visit::Visitor>::visit_rvalue
  64:     0xffff80d6a7a8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_neighbours
  65:     0xffff80d65900 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  66:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  67:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  68:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  69:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  70:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  71:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  72:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  73:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  74:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  75:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  76:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  77:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  78:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  79:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  80:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  81:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  82:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  83:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  84:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  85:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  86:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  87:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  88:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  89:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  90:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  91:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  92:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  93:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  94:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  95:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  96:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  97:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  98:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
  99:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 100:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 101:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 102:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 103:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 104:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 105:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 106:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 107:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 108:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 109:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 110:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 111:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 112:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 113:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 114:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 115:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 116:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 117:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 118:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 119:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 120:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 121:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 122:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 123:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 124:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 125:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 126:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 127:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 128:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 129:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 130:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 131:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 132:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 133:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 134:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 135:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 136:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 137:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 138:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 139:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 140:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 141:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 142:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 143:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 144:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 145:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 146:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 147:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 148:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 149:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 150:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 151:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 152:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 153:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 154:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 155:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 156:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 157:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 158:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 159:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 160:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 161:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 162:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 163:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 164:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 165:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 166:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 167:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 168:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 169:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 170:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 171:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 172:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 173:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 174:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 175:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 176:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 177:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 178:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 179:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 180:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 181:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 182:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 183:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 184:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 185:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 186:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 187:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 188:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 189:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 190:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 191:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 192:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 193:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 194:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 195:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 196:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 197:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 198:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 199:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 200:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 201:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 202:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 203:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 204:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 205:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 206:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 207:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 208:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 209:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 210:     0xffff80d65ad8 - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_items_rec
 211:     0xffff80d4d4d4 - <rustc_session[c622b9604f4a47a1]::session::Session>::time::<(), rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_crate_mono_items::{closure#1}>
 212:     0xffff80d646fc - rustc_monomorphize[a7b190e3b8fd0f39]::collector::collect_crate_mono_items
 213:     0xffff80d62240 - rustc_monomorphize[a7b190e3b8fd0f39]::partitioning::collect_and_partition_mono_items
 214:     0xffff81defc18 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[71ee4195a1895a6]::ty::context::TyCtxt, (), (&std[b1afcd615c2059b7]::collections::hash::set::HashSet<rustc_span[7d79f7a404643ea]::def_id::DefId, core[6386174f90089796]::hash::BuildHasherDefault<rustc_hash[ad37f17d1c62eeb1]::FxHasher>>, &[rustc_middle[71ee4195a1895a6]::mir::mono::CodegenUnit])>
 215:     0xffff81c94514 - rustc_data_structures[b6f3ed531bba89d7]::stack::ensure_sufficient_stack::<((&std[b1afcd615c2059b7]::collections::hash::set::HashSet<rustc_span[7d79f7a404643ea]::def_id::DefId, core[6386174f90089796]::hash::BuildHasherDefault<rustc_hash[ad37f17d1c62eeb1]::FxHasher>>, &[rustc_middle[71ee4195a1895a6]::mir::mono::CodegenUnit]), rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepNodeIndex), rustc_query_system[97bb7d7acedca530]::query::plumbing::execute_job<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt, (), (&std[b1afcd615c2059b7]::collections::hash::set::HashSet<rustc_span[7d79f7a404643ea]::def_id::DefId, core[6386174f90089796]::hash::BuildHasherDefault<rustc_hash[ad37f17d1c62eeb1]::FxHasher>>, &[rustc_middle[71ee4195a1895a6]::mir::mono::CodegenUnit])>::{closure#3}>
 216:     0xffff81b5da4c - rustc_query_system[97bb7d7acedca530]::query::plumbing::try_execute_query::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt, rustc_query_system[97bb7d7acedca530]::query::caches::DefaultCache<(), (&std[b1afcd615c2059b7]::collections::hash::set::HashSet<rustc_span[7d79f7a404643ea]::def_id::DefId, core[6386174f90089796]::hash::BuildHasherDefault<rustc_hash[ad37f17d1c62eeb1]::FxHasher>>, &[rustc_middle[71ee4195a1895a6]::mir::mono::CodegenUnit])>>
 217:     0xffff81afc804 - rustc_query_system[97bb7d7acedca530]::query::plumbing::force_query::<rustc_query_impl[970b09f12593889e]::queries::collect_and_partition_mono_items, rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
 218:     0xffff81d77124 - rustc_query_impl[970b09f12593889e]::query_callbacks::collect_and_partition_mono_items::force_from_dep_node
 219:     0xffff82918ec4 - <rustc_middle[71ee4195a1895a6]::ty::context::TyCtxt as rustc_query_system[97bb7d7acedca530]::dep_graph::DepContext>::try_force_from_dep_node
 220:     0xffff81db4910 - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
 221:     0xffff81d830ec - <rustc_query_system[97bb7d7acedca530]::dep_graph::graph::DepGraph<rustc_middle[71ee4195a1895a6]::dep_graph::dep_node::DepKind>>::try_mark_green::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
 222:     0xffff81b84c44 - rustc_query_system[97bb7d7acedca530]::query::plumbing::try_load_from_disk_and_cache_in_memory::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt, rustc_span[7d79f7a404643ea]::def_id::CrateNum, &[(rustc_middle[71ee4195a1895a6]::middle::exported_symbols::ExportedSymbol, rustc_middle[71ee4195a1895a6]::middle::exported_symbols::SymbolExportLevel)]>
 223:     0xffff81b51284 - rustc_query_system[97bb7d7acedca530]::query::plumbing::try_execute_query::<rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt, rustc_query_system[97bb7d7acedca530]::query::caches::DefaultCache<rustc_span[7d79f7a404643ea]::def_id::CrateNum, &[(rustc_middle[71ee4195a1895a6]::middle::exported_symbols::ExportedSymbol, rustc_middle[71ee4195a1895a6]::middle::exported_symbols::SymbolExportLevel)]>>
 224:     0xffff81b9d728 - rustc_query_system[97bb7d7acedca530]::query::plumbing::get_query::<rustc_query_impl[970b09f12593889e]::queries::exported_symbols, rustc_query_impl[970b09f12593889e]::plumbing::QueryCtxt>
 225:     0xffff82153c0c - <rustc_metadata[72613a923d6bd920]::rmeta::encoder::EncodeContext>::encode_crate_root
 226:     0xffff821605a8 - rustc_metadata[72613a923d6bd920]::rmeta::encoder::encode_metadata_impl
 227:     0xffff821e6648 - rustc_data_structures[b6f3ed531bba89d7]::sync::join::<rustc_metadata[72613a923d6bd920]::rmeta::encoder::encode_metadata::{closure#0}, rustc_metadata[72613a923d6bd920]::rmeta::encoder::encode_metadata::{closure#1}, rustc_metadata[72613a923d6bd920]::rmeta::encoder::EncodedMetadata, ()>
 228:     0xffff8215fec8 - rustc_metadata[72613a923d6bd920]::rmeta::encoder::encode_metadata
 229:     0xffff7e5c0bac - <rustc_interface[8c36daa1df4fa2ae]::queries::Queries>::ongoing_codegen
 230:     0xffff7e4a7984 - <rustc_interface[8c36daa1df4fa2ae]::interface::Compiler>::enter::<rustc_driver[890932e65b1c519a]::run_compiler::{closure#1}::{closure#2}, core[6386174f90089796]::result::Result<core[6386174f90089796]::option::Option<rustc_interface[8c36daa1df4fa2ae]::queries::Linker>, rustc_errors[30a485659b0a31e8]::ErrorReported>>
 231:     0xffff7e495534 - rustc_span[7d79f7a404643ea]::with_source_map::<core[6386174f90089796]::result::Result<(), rustc_errors[30a485659b0a31e8]::ErrorReported>, rustc_interface[8c36daa1df4fa2ae]::interface::create_compiler_and_run<core[6386174f90089796]::result::Result<(), rustc_errors[30a485659b0a31e8]::ErrorReported>, rustc_driver[890932e65b1c519a]::run_compiler::{closure#1}>::{closure#1}>
 232:     0xffff7e4a880c - <scoped_tls[51779844e3f85be9]::ScopedKey<rustc_span[7d79f7a404643ea]::SessionGlobals>>::set::<rustc_interface[8c36daa1df4fa2ae]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[8c36daa1df4fa2ae]::interface::run_compiler<core[6386174f90089796]::result::Result<(), rustc_errors[30a485659b0a31e8]::ErrorReported>, rustc_driver[890932e65b1c519a]::run_compiler::{closure#1}>::{closure#0}, core[6386174f90089796]::result::Result<(), rustc_errors[30a485659b0a31e8]::ErrorReported>>::{closure#0}::{closure#0}, core[6386174f90089796]::result::Result<(), rustc_errors[30a485659b0a31e8]::ErrorReported>>
 233:     0xffff7e4a3fbc - std[b1afcd615c2059b7]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[8c36daa1df4fa2ae]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[8c36daa1df4fa2ae]::interface::run_compiler<core[6386174f90089796]::result::Result<(), rustc_errors[30a485659b0a31e8]::ErrorReported>, rustc_driver[890932e65b1c519a]::run_compiler::{closure#1}>::{closure#0}, core[6386174f90089796]::result::Result<(), rustc_errors[30a485659b0a31e8]::ErrorReported>>::{closure#0}, core[6386174f90089796]::result::Result<(), rustc_errors[30a485659b0a31e8]::ErrorReported>>
 234:     0xffff7e4fd1b8 - <<std[b1afcd615c2059b7]::thread::Builder>::spawn_unchecked<rustc_interface[8c36daa1df4fa2ae]::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface[8c36daa1df4fa2ae]::interface::run_compiler<core[6386174f90089796]::result::Result<(), rustc_errors[30a485659b0a31e8]::ErrorReported>, rustc_driver[890932e65b1c519a]::run_compiler::{closure#1}>::{closure#0}, core[6386174f90089796]::result::Result<(), rustc_errors[30a485659b0a31e8]::ErrorReported>>::{closure#0}, core[6386174f90089796]::result::Result<(), rustc_errors[30a485659b0a31e8]::ErrorReported>>::{closure#1} as core[6386174f90089796]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
 235:     0xffff7d88b8fc - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::had3362d7c7063258
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/alloc/src/boxed.rs:1694:9
 236:     0xffff7d88b8fc - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h48cd5ee8bcf6ba5b
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/alloc/src/boxed.rs:1694:9
 237:     0xffff7d88b8fc - std::sys::unix::thread::Thread::new::thread_start::hf7c96020d8134f70
                               at /rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/sys/unix/thread.rs:106:17
 238:     0xffff7d625628 - start_thread
 239:     0xffff7d74801c - <unknown>
 240:                0x0 - <unknown>

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions