Skip to content

Found unstable fingerprints for evaluate_obligation: EvaluatedToAmbig ICE incremental build using gnarly Warp code #143937

Open
@mmastrac

Description

@mmastrac

I hit an ICE in an incremental build. Not sure how because the code compiled fine, started failing, and then worked again after a clean.

It looks like some gnarly warp code was causing the failure. This code is pretty messy - it's ancient warp code that I haven't updated to a more modern framework.

It's impossible to minimize this because it unfortunately disappeared after a clean.

Code

https://github.com/mmastrac/stylus/blob/master/src/http.rs

    #[cfg(feature = "builtin-ui")]
    let routes ={
        let default_index = path!()
            .map(|| warp::reply::with_header(warp::reply::html(stylus_ui::STYLUS_HTML), "Content-Type", "text/html; charset=utf-8"));

        let default_js = path!("stylus.js")
            .map(|| warp::reply::with_header(warp::reply::html(stylus_ui::STYLUS_JAVASCRIPT), "Content-Type", "text/javascript; charset=utf-8"));

        let default_css = path!("stylus.css")
            .map(|| warp::reply::with_header(warp::reply::html(stylus_ui::STYLUS_CSS), "Content-Type", "text/css; charset=utf-8"));

            warp::get().and(style.or(status).or(log).or(static_files).or(default_index).or(default_js).or(default_css))
    };

Meta

rustc --version --verbose:

rustc 1.87.0 (17067e9ac 2025-05-09)
binary: rustc
commit-hash: 17067e9ac6d7ecb70e50f92c1944e545188d2359
commit-date: 2025-05-09
host: aarch64-apple-darwin
release: 1.87.0
LLVM version: 20.1.1

Error output

error: internal compiler error: encountered incremental compilation error with evaluate_obligation(fa20200322d98ed9-88aadd89099ca4ff)
  |
  = help: This is a known issue with the compiler. Run `cargo clean -p stylus` or `cargo clean` to allow your project to compile
  = note: Please follow the instructions below to create a bug report with the provided information
  = note: See <https://github.com/rust-lang/rust/issues/84970> for more information
Backtrace

thread 'rustc' panicked at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/compiler/rustc_query_system/src/query/plumbing.rs:739:9:
Found unstable fingerprints for evaluate_obligation(fa20200322d98ed9-88aadd89099ca4ff): Ok(EvaluatedToAmbig)
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: rustc_query_system::query::plumbing::incremental_verify_ich_failed::<rustc_middle::ty::context::TyCtxt>
   3: rustc_query_system::query::plumbing::incremental_verify_ich::<rustc_middle::ty::context::TyCtxt, rustc_middle::query::erase::Erased<[u8; 2]>>
   4: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_type_ir::canonical::CanonicalQueryInput<rustc_middle::ty::context::TyCtxt, rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::predicate::Predicate>>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, true>
   5: <rustc_infer::infer::InferCtxt as rustc_trait_selection::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation
   6: <rustc_infer::infer::InferCtxt as rustc_trait_selection::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation_no_overflow
   7: rustc_trait_selection::traits::type_known_to_meet_bound_modulo_regions
   8: rustc_ty_utils::common_traits::is_item_raw
      [... omitted 2 frames ...]
   9: <rustc_middle::ty::Ty>::is_unpin
  10: rustc_ty_utils::abi::fn_abi_new_uncached::{closure#2}::{closure#2}
  11: rustc_ty_utils::abi::fn_abi_new_uncached::{closure#2}
  12: <core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::Ty>>, core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::Ty>>>, core::option::IntoIter<rustc_middle::ty::Ty>>>, rustc_ty_utils::abi::fn_abi_new_uncached::{closure#3}>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::FnAbiError>> as core::iter::traits::iterator::Iterator>::next
  13: rustc_ty_utils::abi::fn_abi_new_uncached
  14: rustc_ty_utils::abi::fn_abi_of_instance
      [... omitted 2 frames ...]
  15: <rustc_codegen_llvm::context::GenericCx<rustc_codegen_llvm::context::FullCx> as rustc_middle::ty::layout::FnAbiOf>::fn_abi_of_instance
  16: <rustc_codegen_llvm::context::GenericCx<rustc_codegen_llvm::context::FullCx> as rustc_codegen_ssa::traits::declare::PreDefineCodegenMethods>::predefine_fn
  17: rustc_codegen_llvm::base::compile_codegen_unit::module_codegen
  18: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::ExtraBackendMethods>::compile_codegen_unit
  19: rustc_codegen_ssa::base::codegen_crate::<rustc_codegen_llvm::LlvmCodegenBackend>
  20: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate
  21: <rustc_interface::queries::Linker>::codegen_and_build_linker
  22: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  23: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: 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.87.0 (17067e9ac 2025-05-09) running on aarch64-apple-darwin

note: compiler flags: --crate-type bin -C embed-bitcode=no -C debuginfo=2 -C split-debuginfo=unpacked -C incremental=[REDACTED]

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

query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `tokio::runtime::task::core::Stage<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::server::H2Stream<warp::filter::service::FilteredFuture<warp::filter::and::AndFuture<warp::filter::FilterFn<{closure@warp::filters::method::method_is<{closure@warp::filters::method::get::{closure#0}}>::{closure#0}}>, warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, http::css_request>, warp::filters::reply::sealed::WithHeader_>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, http::status_request>, {closure@crates/stylus/src/http.rs:162:14: 162:17}>, warp::filters::reply::sealed::WithHeader_>>, warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::filter_segment<{closure@warp::filters::path::param<alloc::string::String>::{closure#0}}, (alloc::string::String,)>::{closure#0}}>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, {closure@crates/stylus/src/http.rs:171:19: 171:25}>, warp::filters::reply::sealed::WithHeader_>>, warp::filter::boxed::BoxedFilter<(alloc::boxed::Box<dyn warp::reply::Reply>,)>>, warp::filter::map::Map<warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>, {closure@crates/stylus/src/http.rs:210:18: 210:20}>>, warp::filter::map::Map<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, {closure@crates/stylus/src/http.rs:213:18: 213:20}>>, warp::filter::map::Map<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, {closure@crates/stylus/src/http.rs:216:18: 216:20}>>>>, hyper::body::body::Body>>>>: core::marker::Unpin`
#1 [is_unpin_raw] computing whether `tokio::runtime::task::core::Stage<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::server::H2Stream<warp::filter::service::FilteredFuture<warp::filter::and::AndFuture<warp::filter::FilterFn<{closure@warp::filters::method::method_is<{closure@warp::filters::method::get::{closure#0}}>::{closure#0}}>, warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, http::css_request>, warp::filters::reply::sealed::WithHeader_>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, http::status_request>, {closure@crates/stylus/src/http.rs:162:14: 162:17}>, warp::filters::reply::sealed::WithHeader_>>, warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::filter_segment<{closure@warp::filters::path::param<alloc::string::String>::{closure#0}}, (alloc::string::String,)>::{closure#0}}>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, {closure@crates/stylus/src/http.rs:171:19: 171:25}>, warp::filters::reply::sealed::WithHeader_>>, warp::filter::boxed::BoxedFilter<(alloc::boxed::Box<dyn warp::reply::Reply>,)>>, warp::filter::map::Map<warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>, {closure@crates/stylus/src/http.rs:210:18: 210:20}>>, warp::filter::map::Map<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, {closure@crates/stylus/src/http.rs:213:18: 213:20}>>, warp::filter::map::Map<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, {closure@crates/stylus/src/http.rs:216:18: 216:20}>>>>, hyper::body::body::Body>>>>` is `Unpin`
#2 [fn_abi_of_instance] computing call ABI of `core::ptr::drop_in_place::<tokio::runtime::task::core::Stage<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::server::H2Stream<warp::filter::service::FilteredFuture<warp::filter::and::AndFuture<warp::filter::FilterFn<{closure@warp::filters::method::method_is<{closure@warp::filters::method::get::{closure#0}}>::{closure#0}}>, warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, http::css_request>, warp::filters::reply::sealed::WithHeader_>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, http::status_request>, {closure@crates/stylus/src/http.rs:162:14: 162:17}>, warp::filters::reply::sealed::WithHeader_>>, warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::filter_segment<{closure@warp::filters::path::param<alloc::string::String>::{closure#0}}, (alloc::string::String,)>::{closure#0}}>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, {closure@crates/stylus/src/http.rs:171:19: 171:25}>, warp::filters::reply::sealed::WithHeader_>>, warp::filter::boxed::BoxedFilter<(alloc::boxed::Box<dyn warp::reply::Reply>,)>>, warp::filter::map::Map<warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>, {closure@crates/stylus/src/http.rs:210:18: 210:20}>>, warp::filter::map::Map<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, {closure@crates/stylus/src/http.rs:213:18: 213:20}>>, warp::filter::map::Map<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, {closure@crates/stylus/src/http.rs:216:18: 216:20}>>>>, hyper::body::body::Body>>>>> - shim(Some(tokio::runtime::task::core::Stage<core::pin::Pin<alloc::boxed::Box<hyper::proto::h2::server::H2Stream<warp::filter::service::FilteredFuture<warp::filter::and::AndFuture<warp::filter::FilterFn<{closure@warp::filters::method::method_is<{closure@warp::filters::method::get::{closure#0}}>::{closure#0}}>, warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, http::css_request>, warp::filters::reply::sealed::WithHeader_>, warp::filter::map::Map<warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, http::status_request>, {closure@crates/stylus/src/http.rs:162:14: 162:17}>, warp::filters::reply::sealed::WithHeader_>>, warp::filter::map::Map<warp::filter::and_then::AndThen<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::filter_segment<{closure@warp::filters::path::param<alloc::string::String>::{closure#0}}, (alloc::string::String,)>::{closure#0}}>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, warp::filter::map::Map<warp::filters::any::Any, {closure@crates/stylus/src/http.rs:150:40: 150:47}>>, {closure@crates/stylus/src/http.rs:171:19: 171:25}>, warp::filters::reply::sealed::WithHeader_>>, warp::filter::boxed::BoxedFilter<(alloc::boxed::Box<dyn warp::reply::Reply>,)>>, warp::filter::map::Map<warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>, {closure@crates/stylus/src/http.rs:210:18: 210:20}>>, warp::filter::map::Map<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, {closure@crates/stylus/src/http.rs:213:18: 213:20}>>, warp::filter::map::Map<warp::filter::and::And<warp::filter::and::And<warp::filters::any::Any, warp::filters::path::Exact<warp::filters::path::internal::Opaque<http::run::{closure#0}::__StaticPath>>>, warp::filter::FilterFn<{closure@warp::filters::path::end::{closure#0}}>>, {closure@crates/stylus/src/http.rs:216:18: 216:20}>>>>, hyper::body::body::Body>>>>))`
end of query stack

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-incr-compArea: Incremental compilationC-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-needs-reproStatus: This issue has no reproduction and needs a reproduction to make progress.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions