Open
Description
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
Labels
Area: Incremental compilationCategory: This is a bug.Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Status: This issue has no reproduction and needs a reproduction to make progress.Relevant to the compiler team, which will review and decide on the PR/issue.This issue may need triage. Remove it if it has been sufficiently triaged.