opentelemetry tower_layer compiler panic
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
I'm new to Rust (I started about one week ago); however I'm filing this issue only because the compiler outputs "this is a bug". I Hope this can help!
Background
Implemented a tower layer which uses pin project by following this guide.
The code has worked fine until I decided to introduce a small change in the code. So, below you'll find the "before" and "after" implementations
Code
BEFORE
use std::{
pin::Pin,
task::{Context, Poll},
};
use futures::Future;
use hyper::{Body, Response};
use opentelemetry::{
global::{self, BoxedTracer},
trace::{FutureExt, SpanRef, TraceContextExt, Tracer, WithContext},
Context as OTLPCtx, KeyValue,
};
use pin_project::pin_project;
use tower::Service;
pub struct TracerService<S> {
inner: S,
tracer: BoxedTracer,
}
impl<S> TracerService<S> {
pub fn new(inner: S) -> Self {
let app_name = std::env::var("APP_NAME").unwrap_or("UNKNOWN".into());
TracerService {
inner,
tracer: global::tracer(app_name),
}
}
}
impl<S> Service<hyper::Request<hyper::Body>> for TracerService<S>
where
S: Service<hyper::Request<hyper::Body>, Response = hyper::Response<hyper::Body>>,
S::Error: Into<BoxError>,
{
type Response = hyper::Response<hyper::Body>;
type Error = BoxError;
type Future = ResponseFuture<WithContext<S::Future>>;
fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
self.inner.poll_ready(cx).map_err(Into::into)
}
fn call(&mut self, request: hyper::Request<hyper::Body>) -> Self::Future {
let span_name = format!("{} {}", request.method().as_str(), request.uri().path());
let span = self.tracer.start(span_name);
let otel_cx = OTLPCtx::current_with_span(span);
let b_ctx = otel_cx.clone();
let response_future = self.inner.call(request).with_context(otel_cx);
ResponseFuture {
response_future: response_future,
ctx: b_ctx,
}
}
}
#[pin_project]
pub struct ResponseFuture<F> {
#[pin]
response_future: F,
ctx: OTLPCtx,
}
impl<F, Error> Future for ResponseFuture<F>
where
F: Future<Output = Result<hyper::Response<hyper::Body>, Error>>,
Error: Into<BoxError>,
{
type Output = Result<hyper::Response<hyper::Body>, BoxError>;
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
let this = self.project();
match this.response_future.poll(cx) {
Poll::Ready(result) => {
return match result.map_err(Into::into) {
Ok(response) => {
let span = this.ctx.span();
decorate_span(span, &response);
Poll::Ready(Ok(response))
}
Err(err) => Poll::Ready(Err(err.into())),
};
}
Poll::Pending => Poll::Pending,
}
}
}
fn decorate_span(span: SpanRef<'_>, response: &Response<Body>) {
let status = response.status();
let status_str = status.as_str();
let is_error = status.as_u16() > 399;
let error_tag = KeyValue {
key: "error".into(),
value: is_error.into(),
};
let status_tag = KeyValue {
key: "status".into(),
value: String::from(status_str).into(),
};
span.set_attribute(error_tag);
span.set_attribute(status_tag);
span.end();
}
pub type BoxError = Box<dyn std::error::Error + Send + Sync>;
AFTER
Only the changed parts are shown
impl<S> Service<hyper::Request<hyper::Body>> for TracerService<S>
...
fn call(&mut self, request: hyper::Request<hyper::Body>) -> Self::Future {
let span_name = format!("{} {}", request.method().as_str(), request.uri().path());
let span = self.tracer.start(span_name);
let otel_cx = OTLPCtx::current_with_span(span);
let response_future = self.inner.call(request).with_context(otel_cx);
ResponseFuture {
response_future: response_future,
// REMOVED ctx: b_ctx,
}
}
...
#[pin_project]
pub struct ResponseFuture<F> {
#[pin]
response_future: F,
// REMOVED ctx: OTLPCtx,
}
impl<F, Error> Future for ResponseFuture<F>
where
F: Future<Output = Result<hyper::Response<hyper::Body>, Error>>,
Error: Into<BoxError>,
{
type Output = Result<hyper::Response<hyper::Body>, BoxError>;
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
let this = self.project();
match this.response_future.poll(cx) {
Poll::Ready(result) => {
return match result.map_err(Into::into) {
Ok(response) => {
// ADD
let otlp_cx = OTLPCtx::current();
let span = otlp_cx.span();
decorate_span(span, &response);
Poll::Ready(Ok(response))
}
Err(err) => Poll::Ready(Err(err.into())),
};
}
Poll::Pending => Poll::Pending,
}
}
}
Meta
rustc --version --verbose:
rustc 1.73.0 (cc66ad468 2023-10-03)
binary: rustc
commit-hash: cc66ad468955717ab92600c770da8c1601a4ff33
commit-date: 2023-10-03
host: x86_64-unknown-linux-gnu
release: 1.73.0
LLVM version: 17.0.2
Error output
SEE BACKTRACE
Backtrace
thread 'rustc' panicked at compiler/rustc_middle/src/dep_graph/dep_node.rs:181:17:
Failed to extract DefId: opt_local_def_id_to_hir_id 7290871ab612167b-16c2654baa403be5
stack backtrace:
0: rust_begin_unwind
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:595:5
1: core::panicking::panic_fmt
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/panicking.rs:67:14
2: <rustc_query_system::dep_graph::dep_node::DepNode<rustc_middle::dep_graph::dep_node::DepKind> as rustc_middle::dep_graph::dep_node::DepNodeExt>::extract_def_id::{closure#0}
3: <rustc_query_system::dep_graph::dep_node::DepNode<rustc_middle::dep_graph::dep_node::DepKind> as rustc_middle::dep_graph::dep_node::DepNodeExt>::extract_def_id
4: <rustc_query_impl::plumbing::query_callback<rustc_query_impl::query_impl::opt_local_def_id_to_hir_id::QueryType>::{closure#0} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_query_system::dep_graph::dep_node::DepNode<rustc_middle::dep_graph::dep_node::DepKind>)>>::call_once
5: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
6: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
7: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
8: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
9: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
10: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
11: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
12: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
13: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
14: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
15: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
16: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
17: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
18: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
19: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::infer::canonical::Canonical<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Predicate>>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, true>
20: <rustc_trait_selection::traits::fulfill::FulfillProcessor as rustc_data_structures::obligation_forest::ObligationProcessor>::process_obligation
21: <rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection::traits::fulfill::FulfillProcessor>
22: <dyn rustc_infer::traits::engine::TraitEngine as rustc_infer::traits::engine::TraitEngineExt>::select_all_or_error
23: rustc_traits::codegen::codegen_select_candidate
[... omitted 3 frames ...]
24: rustc_ty_utils::instance::resolve_instance
[... omitted 1 frame ...]
25: rustc_monomorphize::collector::collect_used_items
26: rustc_monomorphize::collector::collect_items_rec
27: rustc_monomorphize::collector::collect_items_rec
28: rustc_monomorphize::collector::collect_items_rec
29: rustc_monomorphize::collector::collect_items_rec
30: rustc_monomorphize::collector::collect_items_rec
31: rustc_monomorphize::collector::collect_items_rec
32: rustc_monomorphize::collector::collect_items_rec
33: rustc_monomorphize::collector::collect_items_rec
34: rustc_monomorphize::collector::collect_items_rec
35: rustc_monomorphize::collector::collect_items_rec
36: rustc_monomorphize::collector::collect_items_rec
37: rustc_data_structures::sync::par_for_each_in::<alloc::vec::Vec<rustc_middle::mir::mono::MonoItem>, rustc_monomorphize::collector::collect_crate_mono_items::{closure#1}::{closure#0}>
38: <rustc_session::session::Session>::time::<(), rustc_monomorphize::collector::collect_crate_mono_items::{closure#1}>
39: rustc_monomorphize::collector::collect_crate_mono_items
40: rustc_monomorphize::partitioning::collect_and_partition_mono_items
[... omitted 2 frames ...]
41: rustc_codegen_ssa::base::codegen_crate::<rustc_codegen_llvm::LlvmCodegenBackend>
42: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate
43: <rustc_session::session::Session>::time::<alloc::boxed::Box<dyn core::any::Any>, rustc_interface::passes::start_codegen::{closure#0}>
44: rustc_interface::passes::start_codegen
45: <rustc_middle::ty::context::GlobalCtxt>::enter::<<rustc_interface::queries::Queries>::ongoing_codegen::{closure#0}, core::result::Result<alloc::boxed::Box<dyn core::any::Any>, rustc_span::ErrorGuaranteed>>
46: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
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.73.0 (cc66ad468 2023-10-03) running on x86_64-unknown-linux-gnu
note: compiler flags: --crate-type bin -C embed-bitcode=no -C debuginfo=2 -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 `hyper::server::conn::upgrades::UpgradeableConnection<hyper::server::tcp::addr_stream::AddrStream, middleware::tracing::service::TracerService<tower_http::auth::async_require_authorization::AsyncRequireAuthorization<warp::filter::service::FilteredService<warp::filter::boxed::BoxedFilter<(http::response::Response<hyper::body::body::Body>,)>>, middleware::authentication::JWTAuth>>, hyper::common::exec::Exec>: core::marker::Send`
#1 [codegen_select_candidate] computing candidate for `<hyper::server::server::Server<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@src/main.rs:27:40: 27:48]>> as core::future::into_future::IntoFuture>`
#2 [resolve_instance] resolving instance `<hyper::server::server::Server<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@src/main.rs:27:40: 27:48]>> as core::future::into_future::IntoFuture>::into_future`
#3 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
there was a panic while trying to force a dep node
try_mark_green dep node stack:
#0 opt_def_kind(thread 'rustc' panicked at compiler/rustc_middle/src/dep_graph/dep_node.rs:181:17:
Failed to extract DefId: opt_def_kind 7290871ab612167b-16c2654baa403be5
stack backtrace:
0: rust_begin_unwind
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:595:5
1: core::panicking::panic_fmt
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/panicking.rs:67:14
2: <rustc_query_system::dep_graph::dep_node::DepNode<rustc_middle::dep_graph::dep_node::DepKind> as rustc_middle::dep_graph::dep_node::DepNodeExt>::extract_def_id::{closure#0}
3: <rustc_query_system::dep_graph::dep_node::DepNode<rustc_middle::dep_graph::dep_node::DepKind> as rustc_middle::dep_graph::dep_node::DepNodeExt>::extract_def_id
4: <rustc_middle::dep_graph::dep_node::DepKind as rustc_query_system::dep_graph::DepKind>::debug_node
5: core::fmt::rt::Argument::fmt
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/fmt/rt.rs:138:9
6: core::fmt::write
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/fmt/mod.rs:1094:21
7: std::io::Write::write_fmt
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/mod.rs:1714:15
8: <&std::io::stdio::Stderr as std::io::Write>::write_fmt
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/stdio.rs:945:9
9: <std::io::stdio::Stderr as std::io::Write>::write_fmt
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/stdio.rs:919:9
10: std::io::stdio::print_to
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/stdio.rs:1018:21
11: std::io::stdio::_eprint
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/stdio.rs:1106:5
12: rustc_query_system::dep_graph::graph::print_markframe_trace::<rustc_middle::dep_graph::dep_node::DepKind>
13: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
14: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
15: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
16: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
17: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
18: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
19: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
20: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
21: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
22: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
23: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
24: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
25: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
26: <rustc_query_system::dep_graph::graph::DepGraphData<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
27: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::infer::canonical::Canonical<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Predicate>>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, true>
28: <rustc_trait_selection::traits::fulfill::FulfillProcessor as rustc_data_structures::obligation_forest::ObligationProcessor>::process_obligation
29: <rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection::traits::fulfill::FulfillProcessor>
30: <dyn rustc_infer::traits::engine::TraitEngine as rustc_infer::traits::engine::TraitEngineExt>::select_all_or_error
31: rustc_traits::codegen::codegen_select_candidate
[... omitted 3 frames ...]
32: rustc_ty_utils::instance::resolve_instance
[... omitted 1 frame ...]
33: rustc_monomorphize::collector::collect_used_items
34: rustc_monomorphize::collector::collect_items_rec
35: rustc_monomorphize::collector::collect_items_rec
36: rustc_monomorphize::collector::collect_items_rec
37: rustc_monomorphize::collector::collect_items_rec
38: rustc_monomorphize::collector::collect_items_rec
39: rustc_monomorphize::collector::collect_items_rec
40: rustc_monomorphize::collector::collect_items_rec
41: rustc_monomorphize::collector::collect_items_rec
42: rustc_monomorphize::collector::collect_items_rec
43: rustc_monomorphize::collector::collect_items_rec
44: rustc_monomorphize::collector::collect_items_rec
45: rustc_data_structures::sync::par_for_each_in::<alloc::vec::Vec<rustc_middle::mir::mono::MonoItem>, rustc_monomorphize::collector::collect_crate_mono_items::{closure#1}::{closure#0}>
46: <rustc_session::session::Session>::time::<(), rustc_monomorphize::collector::collect_crate_mono_items::{closure#1}>
47: rustc_monomorphize::collector::collect_crate_mono_items
48: rustc_monomorphize::partitioning::collect_and_partition_mono_items
[... omitted 2 frames ...]
49: rustc_codegen_ssa::base::codegen_crate::<rustc_codegen_llvm::LlvmCodegenBackend>
50: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate
51: <rustc_session::session::Session>::time::<alloc::boxed::Box<dyn core::any::Any>, rustc_interface::passes::start_codegen::{closure#0}>
52: rustc_interface::passes::start_codegen
53: <rustc_middle::ty::context::GlobalCtxt>::enter::<<rustc_interface::queries::Queries>::ongoing_codegen::{closure#0}, core::result::Result<alloc::boxed::Box<dyn core::any::Any>, rustc_span::ErrorGuaranteed>>
54: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
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.73.0 (cc66ad468 2023-10-03) running on x86_64-unknown-linux-gnu
note: compiler flags: --crate-type bin -C embed-bitcode=no -C debuginfo=2 -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 `hyper::server::conn::upgrades::UpgradeableConnection<hyper::server::tcp::addr_stream::AddrStream, middleware::tracing::service::TracerService<tower_http::auth::async_require_authorization::AsyncRequireAuthorization<warp::filter::service::FilteredService<warp::filter::boxed::BoxedFilter<(http::response::Response<hyper::body::body::Body>,)>>, middleware::authentication::JWTAuth>>, hyper::common::exec::Exec>: core::marker::Send`
#1 [codegen_select_candidate] computing candidate for `<hyper::server::server::Server<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@src/main.rs:27:40: 27:48]>> as core::future::into_future::IntoFuture>`
#2 [resolve_instance] resolving instance `<hyper::server::server::Server<hyper::server::tcp::AddrIncoming, hyper::service::make::MakeServiceFn<[closure@src/main.rs:27:40: 27:48]>> as core::future::into_future::IntoFuture>::into_future`
#3 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
error: could not compile `ruster` (bin "ruster")
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reducing the supplied TracerService and ResponseFuture BEFORE/AFTER example to a minimal reproducer, then run it with the reported rustc 1.73.0 toolchain and RUST_BACKTRACE=1. Compare whether current compiler versions still panic. Done means a minimized reproduction and a confirmed diagnosis or regression assessment for the compiler ICE.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 28/100