Compiler panicked at 'is_signed on non-scalar ABI' during const evaluation on windows-sys crate
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
Code
The Internal Compiler Error (ICE) was triggered during compilation of the crate windows-sys version 0.59.0, as a dependency of evcxr_jupyter. Minimal reproduction command:
cargo install --locked evcxr_jupyter
Currently, this is the smallest reliable reproduction step found.
Meta
Output of rustc --version --verbose:
rustc 1.85.1 (4eb161250 2025-03-15)
binary: rustc
commit-hash: 4eb161250e340c8f48f66e2b929ef4a5bed7c181
commit-date: 2025-03-15
host: x86_64-pc-windows-msvc
release: 1.85.1
LLVM version: 18.1.3
Error output
thread 'rustc' panicked at /rustc/4eb161250e340c8f48f66e2b929ef4a5bed7c181\compiler\rustc_abi\src\lib.rs:1446:18:
`is_signed` on non-scalar ABI ScalarPair(Union { value: Int(I8, false) }, Initialized { value: Int(I8, false), valid_range: 21301445860939404079836335616267649024..=105358827881679071900638810302764611136 })
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.85.1 (4eb161250 2025-03-15) running on x86_64-pc-windows-msvc
note: compiler flags: --crate-type lib -C opt-level=3 -C embed-bitcode=no -C strip=debuginfo
query stack during panic:
#0 [eval_to_allocation_raw] const-evaluating + checking `Win32::Foundation::ERROR_FLT_NO_HANDLER_DEFINED`
#1 [eval_to_const_value_raw] simplifying constant for the type system `Win32::Foundation::ERROR_FLT_NO_HANDLER_DEFINED`
end of query stack
error: could not compile `windows-sys` (lib)
Caused by:
process didn't exit successfully: `rustc.exe --crate-name windows_sys --edition=2021 windows-sys-0.59.0\src\lib.rs --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no --warn=rust_2018_idioms --warn=unexpected_cfgs --warn=missing_docs` (exit code: 0xc0000005, STATUS_ACCESS_VIOLATION)
error: failed to compile `evcxr_jupyter v0.19.0`, intermediate artifacts can be found at `C:\Users\97175\AppData\Local\Temp\cargo-installLYwVOH`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
Backtrace
stack backtrace:
0: std::backtrace_rs::backtrace::dbghelp64::trace
1: std::backtrace_rs::backtrace::trace_unsynchronized
2: std::sys::backtrace::_print_fmt
3: std::sys::backtrace::impl$0::print::impl$0::fmt
4: core::fmt::rt::Argument::fmt
5: core::fmt::write
6: std::io::Write::write_fmt
7: std::sys::backtrace::BacktraceLock::print
8: std::panicking::default_hook::closure$1
9: std::panicking::default_hook
10: core::slice::sort::unstable::heapsort::heapsort
11: alloc::boxed::impl$30::call
12: std::panicking::rust_panic_with_hook
13: std::panicking::begin_panic_handler::closure$0
14: std::sys::backtrace::__rust_end_short_backtrace
15: std::panicking::begin_panic_handler
16: core::panicking::panic_fmt
17: rustc_const_eval::interpret::eval_context::InterpCx<_>::storage_live_dyn::is_very_trivially_sized
18: rustc_const_eval::const_eval::eval_queries::eval_to_allocation_raw_provider
19: rustc_query_impl::plumbing::query_key_hash_verify_all
20: rustc_query_system::query::plumbing::try_execute_query
21: rustc_query_impl::plumbing::query_key_hash_verify_all
22: rustc_const_eval::const_eval::eval_queries::eval_to_const_value_raw_provider
23: rustc_query_impl::plumbing::query_key_hash_verify_all
24: rustc_query_system::query::plumbing::try_execute_query
25: rustc_query_impl::plumbing::query_key_hash_verify_all
26: hashbrown::raw::RawTable::reserve_rehash
27: rustc_hir_analysis::check_crate
28: rustc_interface::passes::resolver_for_lowering_raw
29: rustc_interface::passes::analysis
30: alloc::sync::Arc<rustc_session::config::OutputFilenames>::drop_slow
31: rustc_query_system::query::plumbing::try_execute_query
32: rustc_query_impl::query_system
33: rustc_interface::util::run_in_thread_with_globals
34: rustc_interface::util::run_in_thread_pool_with_globals
35: rustc_interface::interface::run_compiler
36: alloc::boxed::impl$28::call_once
37: std::sys::pal::windows::thread::impl$0::new::thread_start
38: BaseThreadInitThunk
39: RtlUserThreadStart
This issue was found while attempting to compile the evcxr_jupyter crate on Windows (x86_64-pc-windows-msvc) environment. It seems specifically related to compiling the windows-sys crate, version 0.59.0, using Rust 1.85.1. The error consistently reproduces with optimization flags enabled (-C opt-level=3) and causes the compiler to panic due to an internal error in const evaluation.
A minimized version was not yet produced given the complexity, but the reproduction above is reliable and clear.
Please let me know if any additional information or testing is required.
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 reproducing cargo install --locked evcxr_jupyter on x86_64-pc-windows-msvc with Rust 1.85.1, then inspect compiler/rustc_abi/src/lib.rs around line 1446 and the const-evaluation query stack for ERROR_FLT_NO_HANDLER_DEFINED. Done means the Windows compilation no longer panics and the internal compiler error is addressed.
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
- Needs clarification
- Newbie friendliness
- 20/100