Skip to content

interpret: properly check for inhabitedness of nested references#156977

Open
RalfJung wants to merge 1 commit into
rust-lang:mainfrom
RalfJung:interpret-opsem-inhabited
Open

interpret: properly check for inhabitedness of nested references#156977
RalfJung wants to merge 1 commit into
rust-lang:mainfrom
RalfJung:interpret-opsem-inhabited

Conversation

@RalfJung
Copy link
Copy Markdown
Member

This implements the opsem from the ongoing FCP in rust-lang/unsafe-code-guidelines#413. The bit we were previously missing is that transmuting a &&! into existence was not caught as being immediate UB -- only the &! case behaved as expected.

I did not adjust the layout computation because when we compute the layout of &T, we cannot know the layout of T (as that might be recursive).

r? @oli-obk

@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented May 26, 2026

The Miri subtree was changed

cc @rust-lang/miri

Some changes occurred to the CTFE / Miri interpreter

cc @rust-lang/miri

Some changes occurred to the CTFE machinery

cc @oli-obk, @lcnr

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels May 26, 2026
Comment on lines +282 to +287
ty::Coroutine(..) => {
true // FIXME should these really be trivially inhabited?
}
ty::CoroutineClosure(..) => {
true // FIXME should these really be trivially inhabited?
}
Copy link
Copy Markdown
Member Author

@RalfJung RalfJung May 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't sure how to recurse into these. Are coroutines always inhabited via a trivial start state, or can they be uninhabited due to capturing ! as an "upvar"? How do coroutine closures work?

View changes since the review

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like yes they can be uninhabited

Coroutine(DefId(0:13 ~ diverges[9ce3]::async_let::{closure#0}), [(), std::future::ResumeTy, (), !, (Void,)]) is ABI-uninhabited but not opsem-uninhabited?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I now made them all check the upvar_tys, but I am not entirely sure if that is enough.

}
ty::UnsafeBinder(..) => {
true // FIXME should these really be trivially inhabited?
}
Copy link
Copy Markdown
Member Author

@RalfJung RalfJung May 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no idea what the UnsafeBinder implementation status is but their opsem has not even been discussed yet AFAIK.

View changes since the review

len.try_to_target_usize(tcx).unwrap() == 0
|| is_opsem_inhabited_recursor(elem, tcx, root, adt_handler)
}
ty::Pat(inner, _pat) => is_opsem_inhabited_recursor(inner, tcx, root, adt_handler),
Copy link
Copy Markdown
Member Author

@RalfJung RalfJung May 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess in theory the pattern could make a type uninhabited... so technically if we ever want to use that for the opsem we have to add it has a check here before pattern types get stabilized.

View changes since the review

///
/// When we git an ADT, we call `adt_handler`, giving it as its last argument a closure that it
/// can invoke to continue the recursion.
fn is_opsem_inhabited_recursor<'tcx>(
Copy link
Copy Markdown
Member Author

@RalfJung RalfJung May 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to do something to bound this recursion? We already stop when encountering the same ADT again, so recursion is bounded by the depth of ADT field types until it comes back to the original type.

Do we need to do some stack growing magic?

View changes since the review

@rust-log-analyzer

This comment has been minimized.

@RalfJung RalfJung force-pushed the interpret-opsem-inhabited branch from 4e90bd5 to e6d1440 Compare May 26, 2026 15:51
@rust-log-analyzer

This comment has been minimized.

@RalfJung RalfJung force-pushed the interpret-opsem-inhabited branch from e6d1440 to 33dc892 Compare May 26, 2026 17:12
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer
Copy link
Copy Markdown
Collaborator

The job pr-check-2 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
[RUSTC-TIMING] gimli test:false 7.173
[RUSTC-TIMING] object test:false 9.376
warning: dropping unsupported crate type `dylib` for target `wasm32-wasip1`

error: internal compiler error: compiler/rustc_middle/src/ty/inhabitedness/mod.rs:310:13: non-normalized type in `is_opsem_uninhabited_raw::rec`: `T`


thread 'rustc' (175648) panicked at compiler/rustc_middle/src/ty/inhabitedness/mod.rs:310:13:
Box<dyn Any>
stack backtrace:
   0: std::panicking::begin_panic::<rustc_errors::ExplicitBug>
   1: <rustc_errors::diagnostic::BugAbort as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   2: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>::{closure#0}
   3: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}
   4: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_opt<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
   5: rustc_middle::util::bug::bug_fmt
   6: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   7: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   8: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   9: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  10: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  11: rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw
      [... omitted 1 frame ...]
  12: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<<rustc_middle::ty::Ty>::is_opsem_inhabited::{closure#0}>
  13: <rustc_middle::ty::Ty>::is_opsem_inhabited
  14: rustc_ty_utils::layout::invariant::layout_sanity_check
  15: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  16: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
  17: <alloc::vec::Vec<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::FieldDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}::{closure#0}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  18: <alloc::vec::Vec<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  19: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>
  20: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  21: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
  22: rustc_mir_transform::pass_manager::run_passes_inner
  23: rustc_mir_transform::run_analysis_to_runtime_passes
  24: rustc_mir_transform::mir_drops_elaborated_and_const_checked
      [... omitted 1 frame ...]
  25: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}
  26: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#2}>
  27: rustc_interface::passes::analysis
      [... omitted 1 frame ...]
  28: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
  29: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
  30: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
  32: rustc_span::create_session_globals_then::<(), rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---
warning: the ICE couldn't be written to `/checkout/rustc-ice-2026-05-26T18_52_29-175646.txt`: Read-only file system (os error 30)

note: rustc 1.98.0-nightly (0448238c1 2026-05-26) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type dylib --crate-type rlib -Z embed-metadata=no -C prefer-dynamic -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C embed-bitcode=yes -Z unstable-options -C force-frame-pointers=non-leaf -C debug-assertions=on -Z unstable-options -Z annotate-moves -Z unstable-options -Z macro-backtrace -C split-debuginfo=off -C prefer-dynamic -Z validate-mir -Z mir-opt-level=3 -Z inline-mir -Z inline-mir-preserve-debug -Z mir_strip_debuginfo=locals-in-tiny-functions -Z crate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/") -Z binary-dep-depinfo -Z force-unstable-if-unmarked

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

query stack during panic:
#0 [is_opsem_inhabited_raw] computing whether `sync::poison::PoisonError<sync::poison::mutex::MutexGuard<'_, T>>` is inhabited on the opsem level
#1 [layout_of] computing layout of `sync::poison::PoisonError<sync::poison::mutex::MutexGuard<'_, T>>`
#2 [layout_of] computing layout of `core::result::Result<sync::poison::mutex::MutexGuard<'_, T>, sync::poison::PoisonError<sync::poison::mutex::MutexGuard<'_, T>>>`
#3 [mir_drops_elaborated_and_const_checked] elaborating drops for `sync::poison::condvar::<impl at library/std/src/sync/poison/condvar.rs:49:1: 49:13>::wait`
#4 [analysis] running analysis passes on crate `std`
end of query stack

thread 'rustc' (175648) panicked at compiler/rustc_middle/src/ty/inhabitedness/mod.rs:310:13:
Box<dyn Any>
stack backtrace:
   0: std::panicking::begin_panic::<rustc_errors::ExplicitBug>
   1: <rustc_errors::diagnostic::BugAbort as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   2: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>::{closure#0}
   3: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}
   4: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_opt<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
   5: rustc_middle::util::bug::bug_fmt
   6: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   7: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   8: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   9: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  10: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  11: rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw
      [... omitted 1 frame ...]
  12: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<<rustc_middle::ty::Ty>::is_opsem_inhabited::{closure#0}>
  13: <rustc_middle::ty::Ty>::is_opsem_inhabited
  14: rustc_ty_utils::layout::invariant::layout_sanity_check
  15: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  16: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
  17: <alloc::vec::Vec<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::FieldDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}::{closure#0}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  18: <alloc::vec::Vec<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  19: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>
  20: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  21: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
  22: rustc_mir_transform::pass_manager::run_passes_inner
  23: rustc_mir_transform::run_analysis_to_runtime_passes
  24: rustc_mir_transform::mir_drops_elaborated_and_const_checked
      [... omitted 1 frame ...]
  25: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}
  26: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#2}>
  27: rustc_interface::passes::analysis
      [... omitted 1 frame ...]
  28: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
  29: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
  30: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
  32: rustc_span::create_session_globals_then::<(), rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---
warning: the ICE couldn't be written to `/checkout/rustc-ice-2026-05-26T18_52_29-175646.txt`: Read-only file system (os error 30)

note: rustc 1.98.0-nightly (0448238c1 2026-05-26) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type dylib --crate-type rlib -Z embed-metadata=no -C prefer-dynamic -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C embed-bitcode=yes -Z unstable-options -C force-frame-pointers=non-leaf -C debug-assertions=on -Z unstable-options -Z annotate-moves -Z unstable-options -Z macro-backtrace -C split-debuginfo=off -C prefer-dynamic -Z validate-mir -Z mir-opt-level=3 -Z inline-mir -Z inline-mir-preserve-debug -Z mir_strip_debuginfo=locals-in-tiny-functions -Z crate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/") -Z binary-dep-depinfo -Z force-unstable-if-unmarked

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

query stack during panic:
#0 [is_opsem_inhabited_raw] computing whether `sync::poison::PoisonError<sync::poison::mutex::MutexGuard<'_, T>>` is inhabited on the opsem level
#1 [layout_of] computing layout of `sync::poison::PoisonError<sync::poison::mutex::MutexGuard<'_, T>>`
#2 [layout_of] computing layout of `core::result::Result<sync::poison::mutex::MutexGuard<'_, T>, sync::poison::PoisonError<sync::poison::mutex::MutexGuard<'_, T>>>`
#3 [mir_drops_elaborated_and_const_checked] elaborating drops for `sync::poison::condvar::<impl at library/std/src/sync/poison/condvar.rs:49:1: 49:13>::wait_while`
#4 [analysis] running analysis passes on crate `std`
end of query stack

thread 'rustc' (175648) panicked at compiler/rustc_middle/src/ty/inhabitedness/mod.rs:310:13:
Box<dyn Any>
stack backtrace:
   0: std::panicking::begin_panic::<rustc_errors::ExplicitBug>
   1: <rustc_errors::diagnostic::BugAbort as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   2: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>::{closure#0}
   3: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}
   4: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_opt<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
   5: rustc_middle::util::bug::bug_fmt
   6: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   7: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   8: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   9: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  10: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  11: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  12: rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw
      [... omitted 1 frame ...]
  13: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<<rustc_middle::ty::Ty>::is_opsem_inhabited::{closure#0}>
  14: <rustc_middle::ty::Ty>::is_opsem_inhabited
  15: rustc_ty_utils::layout::invariant::layout_sanity_check
  16: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  17: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
  18: <alloc::vec::Vec<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::FieldDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}::{closure#0}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  19: <alloc::vec::Vec<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  20: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>
  21: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  22: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
  23: rustc_mir_transform::pass_manager::run_passes_inner
  24: rustc_mir_transform::run_analysis_to_runtime_passes
  25: rustc_mir_transform::mir_drops_elaborated_and_const_checked
      [... omitted 1 frame ...]
  26: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}
  27: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#2}>
  28: rustc_interface::passes::analysis
      [... omitted 1 frame ...]
  29: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
  30: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
  31: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  32: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
  33: rustc_span::create_session_globals_then::<(), rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---
warning: the ICE couldn't be written to `/checkout/rustc-ice-2026-05-26T18_52_29-175646.txt`: Read-only file system (os error 30)

note: rustc 1.98.0-nightly (0448238c1 2026-05-26) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type dylib --crate-type rlib -Z embed-metadata=no -C prefer-dynamic -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C embed-bitcode=yes -Z unstable-options -C force-frame-pointers=non-leaf -C debug-assertions=on -Z unstable-options -Z annotate-moves -Z unstable-options -Z macro-backtrace -C split-debuginfo=off -C prefer-dynamic -Z validate-mir -Z mir-opt-level=3 -Z inline-mir -Z inline-mir-preserve-debug -Z mir_strip_debuginfo=locals-in-tiny-functions -Z crate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/") -Z binary-dep-depinfo -Z force-unstable-if-unmarked

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

query stack during panic:
#0 [is_opsem_inhabited_raw] computing whether `sync::poison::PoisonError<(sync::poison::mutex::MutexGuard<'_, T>, bool)>` is inhabited on the opsem level
#1 [layout_of] computing layout of `sync::poison::PoisonError<(sync::poison::mutex::MutexGuard<'_, T>, bool)>`
#2 [layout_of] computing layout of `core::result::Result<(sync::poison::mutex::MutexGuard<'_, T>, bool), sync::poison::PoisonError<(sync::poison::mutex::MutexGuard<'_, T>, bool)>>`
#3 [mir_drops_elaborated_and_const_checked] elaborating drops for `sync::poison::condvar::<impl at library/std/src/sync/poison/condvar.rs:49:1: 49:13>::wait_timeout_ms`
#4 [analysis] running analysis passes on crate `std`
end of query stack

thread 'rustc' (175648) panicked at compiler/rustc_middle/src/ty/inhabitedness/mod.rs:310:13:
Box<dyn Any>
stack backtrace:
   0: std::panicking::begin_panic::<rustc_errors::ExplicitBug>
   1: <rustc_errors::diagnostic::BugAbort as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   2: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>::{closure#0}
   3: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}
   4: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_opt<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
   5: rustc_middle::util::bug::bug_fmt
   6: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   7: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   8: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   9: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  10: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  11: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  12: rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw
      [... omitted 1 frame ...]
  13: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<<rustc_middle::ty::Ty>::is_opsem_inhabited::{closure#0}>
  14: <rustc_middle::ty::Ty>::is_opsem_inhabited
  15: rustc_ty_utils::layout::invariant::layout_sanity_check
  16: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  17: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
  18: <alloc::vec::Vec<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::FieldDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}::{closure#0}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  19: <alloc::vec::Vec<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  20: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>
  21: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  22: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
  23: rustc_mir_transform::pass_manager::run_passes_inner
  24: rustc_mir_transform::run_analysis_to_runtime_passes
  25: rustc_mir_transform::mir_drops_elaborated_and_const_checked
      [... omitted 1 frame ...]
  26: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}
  27: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#2}>
  28: rustc_interface::passes::analysis
      [... omitted 1 frame ...]
  29: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
  30: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
  31: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  32: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
  33: rustc_span::create_session_globals_then::<(), rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---
warning: the ICE couldn't be written to `/checkout/rustc-ice-2026-05-26T18_52_29-175646.txt`: Read-only file system (os error 30)

note: rustc 1.98.0-nightly (0448238c1 2026-05-26) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type dylib --crate-type rlib -Z embed-metadata=no -C prefer-dynamic -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C embed-bitcode=yes -Z unstable-options -C force-frame-pointers=non-leaf -C debug-assertions=on -Z unstable-options -Z annotate-moves -Z unstable-options -Z macro-backtrace -C split-debuginfo=off -C prefer-dynamic -Z validate-mir -Z mir-opt-level=3 -Z inline-mir -Z inline-mir-preserve-debug -Z mir_strip_debuginfo=locals-in-tiny-functions -Z crate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/") -Z binary-dep-depinfo -Z force-unstable-if-unmarked

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

query stack during panic:
#0 [is_opsem_inhabited_raw] computing whether `sync::poison::PoisonError<(sync::poison::mutex::MutexGuard<'_, T>, sync::WaitTimeoutResult)>` is inhabited on the opsem level
#1 [layout_of] computing layout of `sync::poison::PoisonError<(sync::poison::mutex::MutexGuard<'_, T>, sync::WaitTimeoutResult)>`
#2 [layout_of] computing layout of `core::result::Result<(sync::poison::mutex::MutexGuard<'_, T>, sync::WaitTimeoutResult), sync::poison::PoisonError<(sync::poison::mutex::MutexGuard<'_, T>, sync::WaitTimeoutResult)>>`
#3 [mir_drops_elaborated_and_const_checked] elaborating drops for `sync::poison::condvar::<impl at library/std/src/sync/poison/condvar.rs:49:1: 49:13>::wait_timeout`
#4 [analysis] running analysis passes on crate `std`
end of query stack

thread 'rustc' (175648) panicked at compiler/rustc_middle/src/ty/inhabitedness/mod.rs:310:13:
Box<dyn Any>
stack backtrace:
   0: std::panicking::begin_panic::<rustc_errors::ExplicitBug>
   1: <rustc_errors::diagnostic::BugAbort as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   2: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>::{closure#0}
   3: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}
   4: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_opt<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
   5: rustc_middle::util::bug::bug_fmt
   6: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   7: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   8: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   9: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  10: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  11: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  12: rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw
      [... omitted 1 frame ...]
  13: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<<rustc_middle::ty::Ty>::is_opsem_inhabited::{closure#0}>
  14: <rustc_middle::ty::Ty>::is_opsem_inhabited
  15: rustc_ty_utils::layout::invariant::layout_sanity_check
  16: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  17: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
  18: <alloc::vec::Vec<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::FieldDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}::{closure#0}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  19: <alloc::vec::Vec<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  20: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>
  21: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  22: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
  23: rustc_mir_transform::pass_manager::run_passes_inner
  24: rustc_mir_transform::run_analysis_to_runtime_passes
  25: rustc_mir_transform::mir_drops_elaborated_and_const_checked
      [... omitted 1 frame ...]
  26: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}
  27: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#2}>
  28: rustc_interface::passes::analysis
      [... omitted 1 frame ...]
  29: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
  30: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
  31: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  32: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
  33: rustc_span::create_session_globals_then::<(), rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---
warning: the ICE couldn't be written to `/checkout/rustc-ice-2026-05-26T18_52_29-175646.txt`: Read-only file system (os error 30)

note: rustc 1.98.0-nightly (0448238c1 2026-05-26) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type dylib --crate-type rlib -Z embed-metadata=no -C prefer-dynamic -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C embed-bitcode=yes -Z unstable-options -C force-frame-pointers=non-leaf -C debug-assertions=on -Z unstable-options -Z annotate-moves -Z unstable-options -Z macro-backtrace -C split-debuginfo=off -C prefer-dynamic -Z validate-mir -Z mir-opt-level=3 -Z inline-mir -Z inline-mir-preserve-debug -Z mir_strip_debuginfo=locals-in-tiny-functions -Z crate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/") -Z binary-dep-depinfo -Z force-unstable-if-unmarked

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

query stack during panic:
#0 [is_opsem_inhabited_raw] computing whether `sync::poison::PoisonError<(sync::poison::mutex::MutexGuard<'_, T>, sync::WaitTimeoutResult)>` is inhabited on the opsem level
#1 [layout_of] computing layout of `sync::poison::PoisonError<(sync::poison::mutex::MutexGuard<'_, T>, sync::WaitTimeoutResult)>`
#2 [layout_of] computing layout of `core::result::Result<(sync::poison::mutex::MutexGuard<'_, T>, sync::WaitTimeoutResult), sync::poison::PoisonError<(sync::poison::mutex::MutexGuard<'_, T>, sync::WaitTimeoutResult)>>`
#3 [mir_drops_elaborated_and_const_checked] elaborating drops for `sync::poison::condvar::<impl at library/std/src/sync/poison/condvar.rs:49:1: 49:13>::wait_timeout_while`
#4 [analysis] running analysis passes on crate `std`
end of query stack

thread 'rustc' (175648) panicked at compiler/rustc_middle/src/ty/inhabitedness/mod.rs:310:13:
Box<dyn Any>
stack backtrace:
   0: std::panicking::begin_panic::<rustc_errors::ExplicitBug>
   1: <rustc_errors::diagnostic::BugAbort as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   2: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>::{closure#0}
   3: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}
   4: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_opt<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
   5: rustc_middle::util::bug::bug_fmt
   6: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   7: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   8: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   9: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  10: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  11: rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw
      [... omitted 1 frame ...]
  12: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<<rustc_middle::ty::Ty>::is_opsem_inhabited::{closure#0}>
  13: <rustc_middle::ty::Ty>::is_opsem_inhabited
  14: rustc_ty_utils::layout::invariant::layout_sanity_check
  15: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  16: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
  17: <alloc::vec::Vec<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::FieldDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}::{closure#0}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  18: <alloc::vec::Vec<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  19: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>
  20: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  21: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
  22: rustc_mir_transform::pass_manager::run_passes_inner
  23: rustc_mir_transform::run_analysis_to_runtime_passes
  24: rustc_mir_transform::mir_drops_elaborated_and_const_checked
      [... omitted 1 frame ...]
  25: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}
  26: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#2}>
  27: rustc_interface::passes::analysis
      [... omitted 1 frame ...]
  28: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
  29: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
  30: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
  32: rustc_span::create_session_globals_then::<(), rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---
warning: the ICE couldn't be written to `/checkout/rustc-ice-2026-05-26T18_52_29-175646.txt`: Read-only file system (os error 30)

note: rustc 1.98.0-nightly (0448238c1 2026-05-26) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type dylib --crate-type rlib -Z embed-metadata=no -C prefer-dynamic -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C embed-bitcode=yes -Z unstable-options -C force-frame-pointers=non-leaf -C debug-assertions=on -Z unstable-options -Z annotate-moves -Z unstable-options -Z macro-backtrace -C split-debuginfo=off -C prefer-dynamic -Z validate-mir -Z mir-opt-level=3 -Z inline-mir -Z inline-mir-preserve-debug -Z mir_strip_debuginfo=locals-in-tiny-functions -Z crate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/") -Z binary-dep-depinfo -Z force-unstable-if-unmarked

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

query stack during panic:
#0 [is_opsem_inhabited_raw] computing whether `sync::poison::PoisonError<sync::poison::mutex::MutexGuard<'_, T>>` is inhabited on the opsem level
#1 [layout_of] computing layout of `sync::poison::PoisonError<sync::poison::mutex::MutexGuard<'_, T>>`
#2 [layout_of] computing layout of `core::result::Result<sync::poison::mutex::MutexGuard<'_, T>, sync::poison::PoisonError<sync::poison::mutex::MutexGuard<'_, T>>>`
#3 [mir_drops_elaborated_and_const_checked] elaborating drops for `sync::poison::mutex::<impl at library/std/src/sync/poison/mutex.rs:337:1: 337:17>::get_cloned`
#4 [analysis] running analysis passes on crate `std`
end of query stack

thread 'rustc' (175648) panicked at compiler/rustc_middle/src/ty/inhabitedness/mod.rs:310:13:
Box<dyn Any>
stack backtrace:
   0: std::panicking::begin_panic::<rustc_errors::ExplicitBug>
   1: <rustc_errors::diagnostic::BugAbort as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   2: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>::{closure#0}
   3: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}
   4: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_opt<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
   5: rustc_middle::util::bug::bug_fmt
   6: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   7: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   8: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
   9: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  10: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw::{closure#0}>
  11: rustc_middle::ty::inhabitedness::is_opsem_inhabited_raw
      [... omitted 1 frame ...]
  12: rustc_middle::ty::inhabitedness::is_opsem_inhabited_recursor::<<rustc_middle::ty::Ty>::is_opsem_inhabited::{closure#0}>
  13: <rustc_middle::ty::Ty>::is_opsem_inhabited
  14: rustc_ty_utils::layout::invariant::layout_sanity_check
  15: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  16: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
  17: <alloc::vec::Vec<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::FieldDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}::{closure#0}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  18: <alloc::vec::Vec<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>>>>::from_iter
  19: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}>>, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, rustc_ty_utils::layout::layout_of_uncached::{closure#20}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_abi::layout::VariantIdx, rustc_index::vec::IndexVec<rustc_abi::layout::FieldIdx, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>>
  20: rustc_ty_utils::layout::layout_of
      [... omitted 1 frame ...]
  21: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
  22: rustc_mir_transform::pass_manager::run_passes_inner
  23: rustc_mir_transform::run_analysis_to_runtime_passes
  24: rustc_mir_transform::mir_drops_elaborated_and_const_checked
      [... omitted 1 frame ...]
  25: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_interface::passes::run_required_analyses::{closure#2}::{closure#0}>::{closure#0}
  26: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#2}>
  27: rustc_interface::passes::analysis
      [... omitted 1 frame ...]
  28: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
  29: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
  30: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
  32: rustc_span::create_session_globals_then::<(), rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

---
warning: the ICE couldn't be written to `/checkout/rustc-ice-2026-05-26T18_52_29-175646.txt`: Read-only file system (os error 30)

note: rustc 1.98.0-nightly (0448238c1 2026-05-26) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type dylib --crate-type rlib -Z embed-metadata=no -C prefer-dynamic -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C embed-bitcode=yes -Z unstable-options -C force-frame-pointers=non-leaf -C debug-assertions=on -Z unstable-options -Z annotate-moves -Z unstable-options -Z macro-backtrace -C split-debuginfo=off -C prefer-dynamic -Z validate-mir -Z mir-opt-level=3 -Z inline-mir -Z inline-mir-preserve-debug -Z mir_strip_debuginfo=locals-in-tiny-functions -Z crate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/") -Z binary-dep-depinfo -Z force-unstable-if-unmarked

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

query stack during panic:
#0 [is_opsem_inhabited_raw] computing whether `sync::poison::PoisonError<sync::poison::rwlock::RwLockWriteGuard<'_, T>>` is inhabited on the opsem level
#1 [layout_of] computing layout of `sync::poison::PoisonError<sync::poison::rwlock::RwLockWriteGuard<'_, T>>`
#2 [layout_of] computing layout of `core::result::Result<sync::poison::rwlock::RwLockWriteGuard<'_, T>, sync::poison::PoisonError<sync::poison::rwlock::RwLockWriteGuard<'_, T>>>`
#3 [mir_drops_elaborated_and_const_checked] elaborating drops for `sync::poison::rwlock::<impl at library/std/src/sync/poison/rwlock.rs:245:1: 245:18>::set`
#4 [analysis] running analysis passes on crate `std`
end of query stack
[RUSTC-TIMING] std test:false 4.112
warning: `std` (lib) generated 1 warning
error: could not compile `std` (lib); 1 warning emitted

Caused by:
  process didn't exit successfully: `/checkout/obj/build/bootstrap/debug/rustc /checkout/obj/build/bootstrap/debug/rustc --crate-name std --edition=2024 library/std/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type dylib --crate-type rlib --emit=dep-info,metadata,link -Z embed-metadata=no -C prefer-dynamic -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 --warn=unexpected_cfgs --check-cfg 'cfg(feature, values(any()))' --check-cfg 'cfg(target_has_reliable_f16)' --check-cfg 'cfg(target_has_reliable_f16_math)' --check-cfg 'cfg(target_has_reliable_f128)' --check-cfg 'cfg(target_has_reliable_f128_math)' -Cembed-bitcode=yes -Zunstable-options -Cforce-frame-pointers=non-leaf -C debug-assertions=on --cfg 'feature="addr2line"' --cfg 'feature="backtrace"' --cfg 'feature="compiler-builtins-c"' --cfg 'feature="miniz_oxide"' --cfg 'feature="object"' --cfg 'feature="panic-unwind"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("addr2line", "backtrace", "backtrace-trace-only", "compiler-builtins-c", "compiler-builtins-mem", "debug_refcell", "llvm-libunwind", "llvm_enzyme", "miniz_oxide", "object", "optimize_for_size", "panic-unwind", "system-llvm-libunwind", "windows_raw_dylib"))' -C metadata=5847cc84591b5416 -C extra-filename=-eddc13056c78f952 --out-dir /checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps --target wasm32-wasip1 -L dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps -L dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/dist/deps --extern 'priv:addr2line=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libaddr2line-6b0d7fcecf093960.rlib' --extern 'priv:addr2line=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libaddr2line-6b0d7fcecf093960.rmeta' --extern alloc=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/liballoc-975fde218222c12c.rlib --extern alloc=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/liballoc-975fde218222c12c.rmeta --extern 'priv:cfg_if=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libcfg_if-20d921c4582664af.rlib' --extern 'priv:cfg_if=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libcfg_if-20d921c4582664af.rmeta' --extern core=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libcore-0e8525c71ca55ce6.rlib --extern core=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libcore-0e8525c71ca55ce6.rmeta --extern 'priv:hashbrown=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libhashbrown-9d3ebd096561a659.rlib' --extern 'priv:hashbrown=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libhashbrown-9d3ebd096561a659.rmeta' --extern libc=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/liblibc-bc93b72b2594756e.rlib --extern libc=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/liblibc-bc93b72b2594756e.rmeta --extern 'priv:miniz_oxide=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libminiz_oxide-0a51845617177298.rlib' --extern 'priv:miniz_oxide=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libminiz_oxide-0a51845617177298.rmeta' --extern 'priv:object=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libobject-25040ac8c7dc41ee.rlib' --extern 'priv:object=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libobject-25040ac8c7dc41ee.rmeta' --extern 'priv:panic_abort=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libpanic_abort-797917899d19ea37.rlib' --extern 'priv:panic_abort=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libpanic_abort-797917899d19ea37.rmeta' --extern 'priv:panic_unwind=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libpanic_unwind-9ae0a8e81aa5908e.rlib' --extern 'priv:panic_unwind=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libpanic_unwind-9ae0a8e81aa5908e.rmeta' --extern 'priv:rustc_demangle=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/librustc_demangle-3ae45e7e4565bd12.rlib' --extern 'priv:rustc_demangle=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/librustc_demangle-3ae45e7e4565bd12.rmeta' --extern std_detect=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libstd_detect-2da2738a16d01cdc.rlib --extern std_detect=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libstd_detect-2da2738a16d01cdc.rmeta --extern 'priv:unwind=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libunwind-4a24a77f410cacd1.rlib' --extern 'priv:unwind=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libunwind-4a24a77f410cacd1.rmeta' --extern 'priv:wasip1=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libwasip1-6a17b539ccbf3eab.rlib' --extern 'priv:wasip1=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/deps/libwasip1-6a17b539ccbf3eab.rmeta' -Z unstable-options -Zannotate-moves '--check-cfg=cfg(feature,values(any()))' -Zunstable-options -Zmacro-backtrace -Csplit-debuginfo=off -Cprefer-dynamic -Zvalidate-mir -Zmir-opt-level=3 -Zinline-mir -Zinline-mir-preserve-debug -Zmir_strip_debuginfo=locals-in-tiny-functions -Alinker-messages -L native=/wasi-sdk-33.0-x86_64-linux/share/wasi-sysroot/lib/wasm32-wasip1 '-Zcrate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/")' -Z binary-dep-depinfo -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/wasm32-wasip1/dist/build/compiler_builtins-542b4410bd4a22eb/out --cfg backtrace_in_libstd --check-cfg 'cfg(netbsd10)' --check-cfg 'cfg(no_global_oom_handling)' --check-cfg 'cfg(restricted_std)' --check-cfg 'cfg(backtrace_in_libstd)' --check-cfg 'cfg(vxworks_lt_25_09)'` (exit status: 101)
Bootstrap failed while executing `test --stage 1 tests/codegen-llvm --target wasm32-wasip1`
Build completed unsuccessfully in 0:00:52
  local time: Tue May 26 18:52:33 UTC 2026
  network time: Tue, 26 May 2026 18:52:33 GMT
##[error]Process completed with exit code 1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants