Rust: λ‘œμΌ“ μ£Όμ„μ΄μžˆλŠ” "였λ₯˜κ°€ μƒμ„±λ˜μ—ˆμ§€λ§Œ λ°œμƒν•˜μ§€ μ•ŠμŒ"

에 λ§Œλ“  2018λ…„ 01μ›” 20일  Β·  1논평  Β·  좜처: rust-lang/rust

μ£Όμ„μ˜ μ˜€νƒ€λ‘œ 인해 컴파일러 νŒ¨λ‹‰μ΄ λ°œμƒν•©λ‹ˆλ‹€.

이 μ½”λ“œλ₯Ό μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€ ( "데이터"κ·Όμ²˜μ— 이쀑 λ“±ν˜Έ ν‘œμ‹œ).

#[put("/user", data= = "<user")]
fn put_user(user: Json<UpdateUser>, conn: db::Conn) -> Option<Json<Value>> {

λ‚˜λŠ” 이것이 일어날 κ²ƒμœΌλ‘œ μ˜ˆμƒν–ˆλ‹€ : μ μ ˆν•œ 컴파일러 였λ₯˜.

λŒ€μ‹  λ‹€μŒκ³Ό 같은 일이 λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

error: internal compiler error: Error constructed but not emitted

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

메타

rustc --version --verbose :

rustc 1.25.0-nightly (e6072a7b3 2018-01-13)
binary: rustc
commit-hash: e6072a7b3835f1875e81c9fd27799f9b20a0770c
commit-date: 2018-01-13
host: x86_64-unknown-linux-gnu
release: 1.25.0-nightly
LLVM version: 4.0

μ—­ 좔적 :

stack backtrace:
   0:     0x7f2d41212bab - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::h5f6d52492915cd4e
                               at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1:     0x7f2d412278d1 - std::sys_common::backtrace::print::h431edf3a15f44d21
                               at libstd/sys_common/backtrace.rs:68
                               at libstd/sys_common/backtrace.rs:57
   2:     0x7f2d41200e00 - std::panicking::default_hook::{{closure}}::h6e28a80c80ad398d
                               at libstd/panicking.rs:380
   3:     0x7f2d412008c3 - std::panicking::default_hook::h5de848639374d88c
                               at libstd/panicking.rs:390
   4:     0x7f2d4120130b - std::panicking::rust_panic_with_hook::h8d3a97e694abd4a9
                               at libstd/panicking.rs:576
   5:     0x7f2d3bd07d73 - std::panicking::begin_panic::h4687289c571ccf20
   6:     0x7f2d3bd0d5b1 - <rustc_errors::diagnostic_builder::DiagnosticBuilder<'a> as core::ops::drop::Drop>::drop::h6583338a8bed2e63
   7:     0x7f2d3c10e520 - syntax::ext::expand::MacroExpander::expand_invoc::heb9ed1c8308e0934
   8:     0x7f2d3c10a129 - syntax::ext::expand::MacroExpander::expand::hc44fb8af8eb869d3
   9:     0x7f2d3c10942f - syntax::ext::expand::MacroExpander::expand_crate::hb1eba0195e743d05
  10:     0x7f2d415f4775 - rustc_driver::driver::phase_2_configure_and_expand::{{closure}}::h92112561a18f0999
  11:     0x7f2d415e63bc - rustc::util::common::time::h78a5414e854c78df
  12:     0x7f2d41663d6c - rustc_driver::driver::phase_2_configure_and_expand::h521e21b4d485b113
  13:     0x7f2d416600d5 - rustc_driver::driver::compile_input::hd4b83a842d537951
  14:     0x7f2d41669d21 - rustc_driver::run_compiler::h4a2fad22b4a0e7b6
  15:     0x7f2d4156d0c1 - std::sys_common::backtrace::__rust_begin_short_backtrace::hf660c0a0bc4d2860
  16:     0x7f2d4124c6ee - __rust_maybe_catch_panic
                               at libpanic_unwind/lib.rs:102
  17:     0x7f2d415b8be2 - <F as alloc::boxed::FnBox<A>>::call_box::hc2176842fb5e0582
  18:     0x7f2d412216e7 - std::sys_common::thread::start_thread::h63baebbba56a8844
                               at /checkout/src/liballoc/boxed.rs:827
                               at libstd/sys_common/thread.rs:24
  19:     0x7f2d4122acb8 - std::sys::unix::thread::Thread::new::thread_start::h30e00ffa8c70cc92
                               at libstd/sys/unix/thread.rs:90
  20:     0x7f2d3b25208b - start_thread
  21:     0x7f2d40ef4e1e - __GI___clone
  22:                0x0 - <unknown>

A-macros-2.0 C-bug I-ICE T-compiler

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@anxiousmodernman 은 # 47315μ—μ„œ μœ μ‚¬ν•œ 문제λ₯Όλ³΄κ³ ν–ˆμŠ΅λ‹ˆλ‹€.

#[post("/task"), data = "<task>"] // Syntax error!
fn create_task(db: State<Arc<sled::Tree>>, task: Json<Task>) -> status::Accepted<String> {
    status::Accepted(Some(format!("success")))
}

λ™μΌν•œ λ‚΄λΆ€ 컴파일러 였λ₯˜ : 였λ₯˜κ°€ μƒμ„±λ˜μ—ˆμ§€λ§Œ μƒμ„±λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

>λͺ¨λ“  λŒ“κΈ€

@anxiousmodernman 은 # 47315μ—μ„œ μœ μ‚¬ν•œ 문제λ₯Όλ³΄κ³ ν–ˆμŠ΅λ‹ˆλ‹€.

#[post("/task"), data = "<task>"] // Syntax error!
fn create_task(db: State<Arc<sled::Tree>>, task: Json<Task>) -> status::Accepted<String> {
    status::Accepted(Some(format!("success")))
}

λ™μΌν•œ λ‚΄λΆ€ 컴파일러 였λ₯˜ : 였λ₯˜κ°€ μƒμ„±λ˜μ—ˆμ§€λ§Œ μƒμ„±λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰