Description
rustc/compiler deadlock when compile recursive function
I tried this code:
$ RUST_BACKTRACE=full RUST_LOG=trace LLVM_SYS_40_PREFIX=/usr/local/opt/llvm LLVM_SYS_40_FFI_WORKAROUND=1 cargo test
https://github.com/flier/rust-jit/blob/develop/llvm-jit/examples/kaleidoscope-chapter2.rs#L67
I expected to see this happen: compile code or show error
Instead, this happened: rustc hang (CPU 100%)
Meta
rustc --version --verbose
:
rustc 1.19.0 (0ade33941 2017-07-17)
binary: rustc
commit-hash: 0ade339411587887bf01bcfa2e9ae4414c8900d4
commit-date: 2017-07-17
host: x86_64-apple-darwin
release: 1.19.0
LLVM version: 4.0
Backtrace:
INFO:rustc::traits::trans: Cache miss: Binder(<std::iter::TakeWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::str::Chars, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:62:57: 62:88]> as std::iter::Iterator>) => VtableImpl(impl_def_id=DefId { krate: CrateNum(2), node: DefIndex(1866) => core/f813f38::iter[0]::{{impl}}[56] }, substs=Slice([std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::str::Chars, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:62:57: 62:88]]), nested=[(), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()])
INFO:rustc::traits::trans: Cache miss: Binder(<std::iter::TakeWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::str::Chars, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:53:61: 53:84]> as std::iter::IntoIterator>) => VtableImpl(impl_def_id=DefId { krate: CrateNum(2), node: DefIndex(1675) => core/f813f38::iter[0]::traits[0]::{{impl}}[0] }, substs=Slice([std::iter::TakeWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::iter::SkipWhile<std::iter::Peekable<std::iter::SkipWhile<&mut std::str::Chars, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:67:48: 67:75]>, [closure@examples/kaleidoscope-chapter2.rs:48:40: 48:61]>>, [closure@examples/kaleidoscope-chapter2.rs:53:61: 53:84]>]), nested=[(), ()])