Skip to content

rustc segfaults on riscv64 musl #96876

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
nmeum opened this issue May 9, 2022 · 3 comments
Closed

rustc segfaults on riscv64 musl #96876

nmeum opened this issue May 9, 2022 · 3 comments
Labels
C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@nmeum
Copy link

nmeum commented May 9, 2022

Hi,

I am a contributor to the Alpine Linux distribution (which uses musl libc). Since recently, Alpine has support for riscv64. In this context, I am currently trying to make Rust available on this architecture. With some patching, I was able to successfully bootstrap a stage2 rustc for riscv64 musl by cross-compiling using our x86_64 Rust package on Alpine Linux Edge. Compiling basic software (e.g. hello world) with the stage2 rustc works on riscv64 musl. Unfortunately, re-compiling rustc itself with stage2 does not and causes a segmentation fault early on in the build process.

Code

$ python3 ./x.py dist
Building rustbuild
   Compiling proc-macro2 v1.0.30
   Compiling memchr v2.4.1
   Compiling unicode-xid v0.2.2
   Compiling syn v1.0.80
   Compiling cfg-if v1.0.0
   Compiling serde_derive v1.0.125
   Compiling lazy_static v1.4.0
   Compiling log v0.4.14
   Compiling regex-automata v0.1.10
   Compiling libc v0.2.116
   Compiling serde v1.0.125
   Compiling regex-syntax v0.6.25
   Compiling ryu v1.0.5
   Compiling crossbeam-utils v0.8.6
   Compiling serde_json v1.0.59
   Compiling fnv v1.0.7
   Compiling once_cell v1.7.2
   Compiling same-file v1.0.6
   Compiling unicode-width v0.1.8
   Compiling bootstrap v0.0.0 (/home/buildozer/aports/community/rust/src/rustc-1.60.0-src/src/bootstrap)
   Compiling itoa v0.4.6
   Compiling cc v1.0.69
   Compiling build_helper v0.1.0 (/home/buildozer/aports/community/rust/src/rustc-1.60.0-src/src/build_helper)
error: could not compile `ryu`

Caused by:
  process didn't exit successfully: `/usr/bin/rustc --crate-name build_script_build --edition=2018 /home/buildozer/aports/community/rust/src/rustc-1.60.0-src/vendor/ryu-1.0.5/build.rs --error-format=json --json=diagnostic-rendered-ansi,
artifacts,future-incompat --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=0 -C metadata=0008fc44e561b019 -C extra-filename=-0008fc44e561b019 --out-dir /home/buildozer/aports/community/rust/src/rustc-1.60.0-src/bui
ld/bootstrap/debug/build/ryu-0008fc44e561b019 -L dependency=/home/buildozer/aports/community/rust/src/rustc-1.60.0-src/build/bootstrap/debug/deps --cap-lints allow -C target-feature=-crt-static -C linker=gcc -Wrust_2018_idioms -Wunused_
lifetimes -Wsemicolon_in_expressions_from_macros` (signal: 11, SIGSEGV: invalid memory reference)
warning: build failed, waiting for other jobs to finish...
thread 'rustc' panicked at 'index out of bounds: the len is 6 but the index is 2636', compiler/rustc_span/src/hygiene.rs:448:21
stack backtrace:
thread 'rustc' panicked at 'index out of bounds: the len is 171 but the index is 10920', compiler/rustc_span/src/hygiene.rs:448:21
stack backtrace:
thread 'rustc' panicked at 'index out of bounds: the len is 155 but the index is 257', compiler/rustc_span/src/hygiene.rs:448:21

The backtrace for this segfault looks as follows:

(gdb) bt
#0  0x0000003f8d13bff4 in <rustc_span::span_encoding::Span as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#1  0x0000003f8d12c6a6 in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr::{closure#0} () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#2  0x0000003f8d12cbf4 in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr::{closure#0} () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#3  0x0000003f8d12e184 in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr::{closure#0} () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#4  0x0000003f8d12cadc in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr::{closure#0} () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#5  0x0000003f8d13f39a in <&[rustc_hir::hir::Stmt] as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#6  0x0000003f8d12cefc in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr::{closure#0} () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#7  0x0000003f8d12c60c in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#8  0x0000003f8c040e56 in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_body_id () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#9  0x0000003f8c0831d0 in <rustc_hir::hir::OwnerNode as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#10 0x0000003f8c053590 in <rustc_ast_lowering::LoweringContext>::make_owner_info () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#11 0x0000003f8c03b138 in <rustc_ast_lowering::item::ItemLowerer as rustc_ast::visit::Visitor>::visit_item () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#12 0x0000003f8c04f340 in rustc_ast_lowering::lower_crate () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#13 0x0000003f8b9e5122 in <rustc_interface::queries::Queries>::global_ctxt () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#14 0x0000003f8b8f3808 in rustc_interface::interface::run_compiler::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0} () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#15 0x0000003f8b925ecc in std::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>> () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#16 0x0000003f8b8eef4a in <<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} () from /usr/lib/librustc_driver-e81ecd0b9419698e.so
#17 0x0000003f8b1eade6 in std::sys::unix::thread::Thread::new::thread_start () from /usr/lib/libstd-5a982fb5ee18f2d1.so
#18 0x0000003f8dc18b72 in start (p=0x3f857cd6b8) at src/thread/pthread_create.c:203
#19 0x0000003f8dc1a248 in __clone () at src/thread/riscv64/clone.s:30
Backtrace stopped: frame did not save the PC

It looks to me like it is segfaulting while attempting to print a backtrace?

Full log: alpine-edge-riscv64-buildlog.txt

Meta

rustc --version --verbose:

rustc 1.60.0
binary: rustc
commit-hash: unknown
commit-date: unknown
host: riscv64-alpine-linux-musl
release: 1.60.0
LLVM version: 13.0.1

As you can see, this version uses a custom Alpine triplet with some minor patches applied which cause rustc to link against musl dynamically by default. You can find the full set of patches (including the once required to make rust-1.6.0 build on riscv64 musl in the first place) here. I don't think that the issue is caused by the patches that we are currently applying, hence reporting this here (if strictly needed I can also compile a rustc without our custom triplet, however, as noted above vanilla rust-1.6.0 wont compile without patches on riscv64 musl anyhow).

Any ideas what might be causing this or tips on how to debug this further?

Related: #93975


CC: @nekopsykose, @kaniini, @Cogitri

@nmeum nmeum added C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels May 9, 2022
@nmeum
Copy link
Author

nmeum commented May 21, 2022

I did a few more tests and managed to isolate some minimal examples.

Example 1

Code:

fn main() { let mut f = Result::Ok(5)?; }

Compilation:

$ gdb --args rustc test1.rs
(gdb) run
Starting program: /usr/bin/rustc test1.rs
[New LWP 1800]

Thread 2 "rustc" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 1800]
0x0000003ff74dcff4 in <rustc_span::span_encoding::Span as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
(gdb) bt
#0  0x0000003ff74dcff4 in <rustc_span::span_encoding::Span as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable ()
   from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#1  0x0000003ff74cd6a6 in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr::{closure#0} () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#2  0x0000003ff74cdbf4 in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr::{closure#0} () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#3  0x0000003ff74cf184 in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr::{closure#0} () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#4  0x0000003ff74cdadc in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr::{closure#0} () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#5  0x0000003ff74e039a in <&[rustc_hir::hir::Stmt] as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#6  0x0000003ff74cdefc in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr::{closure#0} () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#7  0x0000003ff74cd60c in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_hir_expr () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#8  0x0000003ff63e1e56 in <rustc_query_system::ich::hcx::StableHashingContext as rustc_hir::stable_hash_impls::HashStableContext>::hash_body_id () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#9  0x0000003ff64241d0 in <rustc_hir::hir::OwnerNode as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#10 0x0000003ff63f4590 in <rustc_ast_lowering::LoweringContext>::make_owner_info () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#11 0x0000003ff63dc138 in <rustc_ast_lowering::item::ItemLowerer as rustc_ast::visit::Visitor>::visit_item () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#12 0x0000003ff63f0340 in rustc_ast_lowering::lower_crate () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#13 0x0000003ff5d86122 in <rustc_interface::queries::Queries>::global_ctxt () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#14 0x0000003ff5c94808 in rustc_interface::interface::run_compiler::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0} ()
   from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#15 0x0000003ff5cc6ecc in std::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>> ()
   from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#16 0x0000003ff5c8ff4a in <<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} () from /usr/bin/../lib/librustc_driver-e81ecd0b9419698e.so
#17 0x0000003ff558bde6 in std::sys::unix::thread::Thread::new::thread_start () from /usr/bin/../lib/libstd-5a982fb5ee18f2d1.so
#18 0x0000003ff7fbbb72 in start (p=0x3fefb706b8) at src/thread/pthread_create.c:203
#19 0x0000003ff7fbd248 in __clone () at src/thread/riscv64/clone.s:30
Backtrace stopped: frame did not save the PC

Example 2

Code:

fn main() { let mut f = None?; }

Compilation:

error: internal compiler error: compiler/rustc_typeck/src/check/fn_ctxt/_impl.rs:868:17: `resolve_ty_and_res_fully_qualified_call` called on `LangItem`

thread 'rustc' panicked at 'Box<dyn Any>', compiler/rustc_errors/src/lib.rs:1160:9
stack backtrace:
   0:       0x3fa3a2d206 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::ha2794daee6ba9423
   1:       0x3fa3a790a0 - core::fmt::write::ha45966a0d0bf9feb
   2:       0x3fa3a20092 - std::io::Write::write_fmt::h08378143163f41c9
   3:       0x3fa3a304b2 - std::panicking::default_hook::{{closure}}::h221571fdb3d8c73d
   4:       0x3fa3a301ea - std::panicking::default_hook::h345b3fce6c89ab24
   5:       0x3fa415cae6 - rustc_driver[9005cb7fb2104183]::DEFAULT_HOOK::{closure#0}::{closure#0}
   6:       0x3fa3a30ba6 - std::panicking::rust_panic_with_hook::h8ffebecf7a9398ab
   7:       0x3fa5a31014 - std[c958d8f0cdffa67e]::panicking::begin_panic::<rustc_errors[85b203b8ba770dd8]::ExplicitBug>::{closure#0}
   8:       0x3fa5a304f2 - std[c958d8f0cdffa67e]::sys_common::backtrace::__rust_end_short_backtrace::<std[c958d8f0cdffa67e]::panicking::begin_panic<rustc_errors[85b203b8ba770dd8]::ExplicitBug>::{closure#0}, !>
   9:       0x3fa40f8cfe - std[c958d8f0cdffa67e]::panicking::begin_panic::<rustc_errors[85b203b8ba770dd8]::ExplicitBug>
  10:       0x3fa5a2f3fa - std[c958d8f0cdffa67e]::panic::panic_any::<rustc_errors[85b203b8ba770dd8]::ExplicitBug>
  11:       0x3fa5a24fc0 - <rustc_errors[85b203b8ba770dd8]::HandlerInner>::bug
  12:       0x3fa5a212b4 - <rustc_errors[85b203b8ba770dd8]::Handler>::bug
  13:       0x3fa58aa74a - rustc_middle[18ecd2b671ace77]::ty::context::tls::with_opt::<rustc_middle[18ecd2b671ace77]::util::bug::opt_span_bug_fmt<rustc_span[9b21865714f79047]::span_encoding::Span>::{closure#0}, ()>
  14:       0x3fa58d6b7c - rustc_middle[18ecd2b671ace77]::util::bug::opt_span_bug_fmt::<rustc_span[9b21865714f79047]::span_encoding::Span>
  15:       0x3fa40e882e - rustc_middle[18ecd2b671ace77]::util::bug::bug_fmt
  16:       0x3fa4608b9c - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::resolve_ty_and_res_fully_qualified_call
  17:       0x3fa45f96d2 - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_expr_path
  18:       0x3fa45f153c - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  19:       0x3fa460b376 - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_argument_types
  20:       0x3fa45a56b0 - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::confirm_builtin_call
  21:       0x3fa45a2c9e - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_call
  22:       0x3fa45f153c - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  23:       0x3fa459c646 - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::demand_scrutinee_type
  24:       0x3fa46fbea8 - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_match
  25:       0x3fa45f153c - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  26:       0x3fa460db0c - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_decl_initializer
  27:       0x3fa460dbd6 - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_decl
  28:       0x3fa460dd22 - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_stmt
  29:       0x3fa460e520 - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_block_with_expected
  30:       0x3fa45f153c - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  31:       0x3fa45f9e86 - <rustc_typeck[d8d854df65b69f8b]::check::fn_ctxt::FnCtxt>::check_return_expr
  32:       0x3fa4701e58 - rustc_typeck[d8d854df65b69f8b]::check::check::check_fn
  33:       0x3fa4679256 - rustc_typeck[d8d854df65b69f8b]::check::typeck
  34:       0x3fa4ea48bc - rustc_query_system[444d3042d9776945]::query::plumbing::try_execute_query::<rustc_query_impl[fac207277026ba76]::plumbing::QueryCtxt, rustc_query_system[444d3042d9776945]::query::caches::DefaultCache<rustc_span[9b21865714f79047]::def_id::LocalDefId, &rustc_middle[18ecd2b671ace77]::ty::context::TypeckResults>>
  35:       0x3fa5035a66 - <rustc_query_impl[fac207277026ba76]::Queries as rustc_middle[18ecd2b671ace77]::ty::query::QueryEngine>::typeck
  36:       0x3fa467c990 - rustc_typeck[d8d854df65b69f8b]::check::typeck_item_bodies
  37:       0x3fa4f0d19e - rustc_query_system[444d3042d9776945]::query::plumbing::try_execute_query::<rustc_query_impl[fac207277026ba76]::plumbing::QueryCtxt, rustc_query_system[444d3042d9776945]::query::caches::DefaultCache<(), ()>>
  38:       0x3fa5035944 - <rustc_query_impl[fac207277026ba76]::Queries as rustc_middle[18ecd2b671ace77]::ty::query::QueryEngine>::typeck_item_bodies
  39:       0x3fa46fac40 - rustc_typeck[d8d854df65b69f8b]::check_crate
  40:       0x3fa4226470 - rustc_interface[995760d1abdadbfd]::passes::analysis
  41:       0x3fa4efbd7c - rustc_query_system[444d3042d9776945]::query::plumbing::try_execute_query::<rustc_query_impl[fac207277026ba76]::plumbing::QueryCtxt, rustc_query_system[444d3042d9776945]::query::caches::DefaultCache<(), core[3b62df0531f623c4]::result::Result<(), rustc_errors[85b203b8ba770dd8]::ErrorReported>>>
  42:       0x3fa50220c0 - <rustc_query_impl[fac207277026ba76]::Queries as rustc_middle[18ecd2b671ace77]::ty::query::QueryEngine>::analysis
  43:       0x3fa4142db4 - rustc_interface[995760d1abdadbfd]::interface::run_compiler::<core[3b62df0531f623c4]::result::Result<(), rustc_errors[85b203b8ba770dd8]::ErrorReported>, rustc_driver[9005cb7fb2104183]::run_compiler::{closure#1}>::{closure#0}
  44:       0x3fa4174ecc - std[c958d8f0cdffa67e]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[995760d1abdadbfd]::util::run_in_thread_pool_with_globals<rustc_interface[995760d1abdadbfd]::interface::run_compiler<core[3b62df0531f623c4]::result::Result<(), rustc_errors[85b203b8ba770dd8]::ErrorReported>, rustc_driver[9005cb7fb2104183]::run_compiler::{closure#1}>::{closure#0}, core[3b62df0531f623c4]::result::Result<(), rustc_errors[85b203b8ba770dd8]::ErrorReported>>::{closure#0}, core[3b62df0531f623c4]::result::Result<(), rustc_errors[85b203b8ba770dd8]::ErrorReported>>
  45:       0x3fa413df4a - <<std[c958d8f0cdffa67e]::thread::Builder>::spawn_unchecked_<rustc_interface[995760d1abdadbfd]::util::run_in_thread_pool_with_globals<rustc_interface[995760d1abdadbfd]::interface::run_compiler<core[3b62df0531f623c4]::result::Result<(), rustc_errors[85b203b8ba770dd8]::ErrorReported>, rustc_driver[9005cb7fb2104183]::run_compiler::{closure#1}>::{closure#0}, core[3b62df0531f623c4]::result::Result<(), rustc_errors[85b203b8ba770dd8]::ErrorReported>>::{closure#0}, core[3b62df0531f623c4]::result::Result<(), rustc_errors[85b203b8ba770dd8]::ErrorReported>>::{closure#1} as core[3b62df0531f623c4]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  46:       0x3fa3a39de6 - std::sys::unix::thread::Thread::new::thread_start::h018c2571d3ddafbc
  47:       0x3fa6469b72 - start
                               at /home/buildozer/aports/main/musl/src/v1.2.3/src/thread/pthread_create.c:203:2

note: 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.60.0 running on riscv64-alpine-linux-musl

query stack during panic:
#0 [typeck] type-checking `main`
#1 [typeck_item_bodies] type-checking all item bodies
#2 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to previous error

Any ideas how to debug this further or any hints on what might be causing these sorts of issues?

@ncopa
Copy link

ncopa commented Jul 21, 2022

I was able to crosscompile a rust binary for riscv64 using rust-1.62.0 and llvm14. The built rust compiler did not segfault when running the two testcases above:

~ $ rustc --version
rustc 1.62.0
~ $ rustc --version --verbose
rustc 1.62.0
binary: rustc
commit-hash: unknown
commit-date: unknown
host: riscv64-alpine-linux-musl
release: 1.62.0
LLVM version: 14.0.6
~ $ rustc test1.rs 
error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
 --> test1.rs:1:38
  |
1 | fn main() { let mut f = Result::Ok(5)?; }
  | -------------------------------------^---
  | |                                    |
  | |                                    cannot use the `?` operator in a function that returns `()`
  | this function should return `Result` or `Option` to accept `?`
  |
  = help: the trait `FromResidual<Result<Infallible, _>>` is not implemented for `()`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.
~ $ rustc test1.rs 
error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
 --> test1.rs:1:38
  |
1 | fn main() { let mut f = Result::Ok(5)?; }
  | -------------------------------------^---
  | |                                    |
  | |                                    cannot use the `?` operator in a function that returns `()`
  | this function should return `Result` or `Option` to accept `?`
  |
  = help: the trait `FromResidual<Result<Infallible, _>>` is not implemented for `()`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.
~ $ rustc test2.rs 
error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
 --> test2.rs:1:29
  |
1 | fn main() { let mut f = None?; }
  | ----------------------------^---
  | |                           |
  | |                           cannot use the `?` operator in a function that returns `()`
  | this function should return `Result` or `Option` to accept `?`
  |
  = help: the trait `FromResidual<Option<Infallible>>` is not implemented for `()`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.
~ $ uname -a
Linux ncopa-edge-riscv64 5.15.11-0-lts #1-Alpine SMP Thu, 23 Dec 2021 08:03:24 +0000 riscv64 GNU/Linux
~ $

@nmeum
Copy link
Author

nmeum commented Jul 22, 2022

Looks like this was fixed in 1.62.0 then.

@nmeum nmeum closed this as completed Jul 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

2 participants